본문 바로가기
Etc/경험담

[APK] Unsigned APK to Signed APK

by 생각하는달팽이 2016. 8. 11.

안녕하세요?

이번시간에는 APK 를 수동으로 Signing 하는 방법에 대해서 설명해드리고자 합니다.


우선 구글 DOC 를 보면 아래와 같이 입력해서 진행하면 된다고 되어 있습니다.


jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore key-store-file-name Unsigned_LOA_1_2_01.apk key-alias-name


그러나 해당 명령어 실행시 timestamp 에러가 발생하며 진행이 되지 않는데요.

해당 문제를 아래와 같은 옵션을 추가하면 해결하실 수 있습니다.


뒤쪽의 -tsa 옵션을 넣지 않으면 에러가 발생합니다.


jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore key-store-file-name Unsigned_LOA_1_2_01.apk key-alias-name -tsa http://timestamp.digicert.com


이후 구글 콘솔에서 업로드를 하게되면 다음의 에러에 직면하게 될 수 있습니다.


Zipalign 문제이지요. 그럴 경우


zipalign -v 4


위의 명령어를 입력하셔서 진행하시면 됩니다.


저와 같은 문제를 겪으신 분께 많은 도움이 되었으면 좋겠습니다.

감사합니다.



아래는 자동화 스크립트입니다.

명령어는 다음과 같습니다.


./signing.sh Unsigend_XXX.apk Signed_XXX.apk



#!/bin/bash
#!/usr/bin/expect -f

APK_FILE="$1"
OUT_FILE="$2"
PASSWORD="ALXOSDFDK!!@KDFKXS1"
ALIAS_PASSWORD="LLCKSKDO!CVS"
expect -c "spawn jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore com.test.keystore $APK_FILE com.alias.name -tsa http://timestamp.digicert.com; expect \"Enter Passphrase for keystore:\" ; send $PASSWORD\n ;expect \"Enter key password for com.millionjoy.loa:\"; send $ALIAS_PASSWORD\n; interact"
rm $OUT_FILE
./zipalign -v 4 $APK_FILE $OUT_FILE
echo "DONE SIGNING"


반응형