앱을 업데이트하고 올렸더니 다음과 같은 메시지가 나왔다.
"zip 정렬되지 않은 APK를 업로드했습니다. APK에 zip 정렬 도구를 실행한 다음 다시 업로드해야 합니다."
sdk 폴더의 build-tools로 이동한 다음 빌드에 사용한 gradle plugin 버전으로 들어간다. 여기에 zipalign이 위치해 있다.
zipalign -v 4 foo.apk bar.apk
다음과 같이 입력해주면 되지만… 결과는 fail이었다. 마지막에 다음과 같이 찍혔다.
4413714 resources.arsc (BAD - 2)Verification FAILED
구글링을 해보니 명확한 원인은 찾을 수 없었고 수동으로 signing을 하면 된다고 하는 글이 있었다.
수동 사인은 다음과 같이 할 수 있다.
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore [keystore file] foo.apk [alias]
여기서 alias가 뭔지 고민했는데 다음 명령어를 통해 확인할 수 있다.
keytool -keystore [keystore file] -list -v
이번에는 다음 메시지가 나온다.
jarsigner: unable to sign jar: java.util.zip.ZipException: invalid entry compressed size
이는 이미 사인되어 있는 apk일 경우에 나오는 메시지라 한다. 사이닝 정보다 담기는 META-INF 폴더를 다음 명령어로 지운다.
zip -d foo.apk META-INF/\*
자 이제 올려볼까? 이젠 디버그 모드로 되어 있다고 하면서 안 된다. 마지막으로 menifest에 다음을 추가한다.
android:debuggable="false"
된다… 힘들었다
'Tech > Android' 카테고리의 다른 글
SyncAdapter는 무엇이죠? (0) | 2016.05.10 |
---|---|
UNEXPECTED TOP-LEVEL EXCEPTION Multiple dex files define (0) | 2015.09.09 |
AsyncTaskLoader는 무엇이죠? (0) | 2015.08.14 |