문제 정보
키값을 찾으시오
문제 파일
SmartApp L01.apk
apk를 adb로 설치했을때 아래와 같이 AndroidManifest.xml 파일 내용을 파싱할수 없다는 오류가 뜬다.
myMac@MacBook-Pro Downloads % adb install -r SmartApp\ L01.apk Performing Streamed Install adb: failed to install SmartApp L01.apk: Failure [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION: Failed to parse /data/app/vmdl895182922.tmp/base.apk: AndroidManifest.xml] myMac@MacBook-Pro Downloads % adb logcat "*:E" ... 06-23 19:10:48.660 2090 2131 E PackageInstaller: Commit of session 895182922 failed: Failed to parse /data/app/vmdl895182922.tmp/base.apk: AndroidManifest.xml ...
myMac@MacBook-Pro apk % unzip -q SmartApp\ L01.apk myMac@MacBook-Pro apk % ls -la total 1384 drwxr-xr-x 9 myMac staff 288 6 23 21:03 . drwxr-xr-x 10 myMac staff 320 6 23 20:34 .. -rw-rw-r--@ 1 myMac staff 1648 11 2 2013 AndroidManlfests.xml -rw-r--r--@ 1 myMac staff 219902 12 10 2021 SmartApp L01.apk -rw-rw-r--@ 1 myMac staff 469348 11 2 2013 class.dex drwxrwxr-x@ 3 myMac staff 96 11 2 2013 lib drwxrwxr-x@ 8 myMac staff 256 11 2 2013 res -rw-rw-r--@ 1 myMac staff 2240 11 2 2013 resource.arsc
apk 압축을 해제해보면 다음 파일들이 좀 이상하단걸 알 수 있었다.
그래서 다음 파일 이름들을 수정해주었다.
- AndroidManlfests.xml -> AndroidManifest.xml
- class.dex -> classes.dex
- resource.arsc -> resources.arsc
myMac@MacBook-Pro Downloads % adb install -r SmartApp\ L01.apk Performing Streamed Install adb: failed to install ./SmartApp L01.apk: Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed to collect certificates from /data/app/vmdl929542716.tmp/base.apk: Attempt to get length of null array] myMac@MacBook-Pro Downloads % adb logcat "*:E" ... 06-23 20:26:05.717 2090 2131 E PackageInstaller: Commit of session 929542716 failed: Failed to collect certificates from /data/app/vmdl929542716.tmp/base.apk: Attempt to get length of null array ...
압축하고 설치하니 이번에는 APK 서명 오류가 떴다.
아래와 같이 apk를 다시 서명해주면 해결된다.
myMac@MacBook-Pro Downloads % keytool -genkey -v -keystore kr.h4ck.keystore -alias h4ck.kr -keyalg RSA -keysize 2048 키 저장소 비밀번호 입력: 새 비밀번호 다시 입력: 이름과 성을 입력하십시오. [Unknown]: h4ck.kr 조직 단위 이름을 입력하십시오. [Unknown]: h4ck.kr 조직 이름을 입력하십시오. [Unknown]: h4ck.kr 구/군/시 이름을 입력하십시오? [Unknown]: h4ck.kr 시/도 이름을 입력하십시오. [Unknown]: h4ck.kr 이 조직의 두 자리 국가 코드를 입력하십시오. [Unknown]: KO CN=h4ck.kr, OU=h4ck.kr, O=h4ck.kr, L=h4ck.kr, ST=h4ck.kr, C=KO이(가) 맞습니까? [아니오]: y 다음에 대해 유효 기간이 90일인 2,048비트 RSA 키 쌍 및 자체 서명된 인증서(SHA256withRSA)를 생성하는 중 : CN=h4ck.kr, OU=h4ck.kr, O=h4ck.kr, L=h4ck.kr, ST=h4ck.kr, C=KO [kr.h4ck.keystore을(를) 저장하는 중] myMac@MacBook-Pro Downloads % jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore kr.h4ck.keystore SmartApp\ L01.apk h4ck.kr Enter Passphrase for keystore: adding: META-INF/MANIFEST.MF adding: META-INF/H4CK_KR.SF adding: META-INF/H4CK_KR.RSA signing: AndroidManifest.xml signing: lib/armeabi/libKISACrypto.so signing: class.dex signing: AndroidManlfests.xml signing: resource.arsc >>> Signer X.509, CN=h4ck.kr, OU=h4ck.kr, O=h4ck.kr, L=h4ck.kr, ST=h4ck.kr, C=KO [trusted certificate] jar signed. myMac@MacBook-Pro Downloads % adb install -r ./SmartApp\ L01.apk Performing Streamed Install Success

