엄코딩의 개발 일지

apksigner

프로젝트 진행중 중국 Baidu 앱 스토어에 앱을 재등록해야하는 상황을 겪었습니다.
Baidu에서 제공하는 apk파일을 다운로드한 후에, 서명을 하고 업로드를 진행해야합니다.


참고로 저는 중국어를 못해서 번역 돌렸습니다.

( 번역돌려도 무슨말인지... 한참을 생각했습니다. )

이 과정에서 '서명되지 않은 apk 파일을 어떻게 서명할까'라는 의문이 들었고,

apksigner 를 알게되었습니다.

apksigner는 간단히 말하자면 이 도구를 사용해서 apk에 서명하거나, 해당 apk가 지원하는 모든 Android 플랫폼 버전에서 서명이 성공적으로 검증되는지를 확인할 수 있는 기능을 제공하는 도구입니다.

제가 해야하는 일은 apksigner를 통해 unsigned.apk 즉, 서명되지 않은 apk를 수동으로 서명해야 했습니다. 

주의 사항 : apksigner 도구를 사용하려면 수정 버전 24.0.3 이상의 Android SDK 빌드 도구를 설치해야 합니다. SDK Manager를 사용하여 이 패키지를 업데이트할 수 있습니다.

하지만, 서명되지 않은 APK 수동으로 서명하기  해당 페이지를 보고 시도해보았지만..
gradlew 명령어도, apksigner 명령어도 먹질않았습니다.



-bash: apksigner: command not found

위와 같은 문구가 뜨면서 말이죠.


apksigner는 어디서 쓸 수 있는걸까...

이런 생각중에 google developer reference에 있는 주의사항이 생각났습니다.


apksigner 도구를 사용하려면 수정 버전 24.0.3 이상의 Android SDK 빌드 도구를 설치해야 합니다. SDK Manager를 사용하여 이 패키지를 업데이트할 수 있습니다.


'아 경로를 변경해서 해봐야지' 라는 생각과 함께...

안드로이드가 설치된 경로 -> sdk -> build-tools -> 사용하고있는 버전 ( 저는 26.0.2 ) -> apksigner


이 경로에 와보니 apksigner이 보입니다.

apksigner sign --ks my-release-key.jks --out my-app-release.apk my-app-unsigned-aligned.apk

그럼 이제 터미널로 돌아와서, 위의 양식대로 작성하시면 됩니다.


예시 : ~/Android/sdk/build-tools/26.0.2/apksigner sign --ks [서명키경로] --out [signed.apk경로] [unsigned.apk경로]


[서명키경로] : Baidu 앱 업로드의 경우 Baidu에서 제공하는 ~unsigned.apk를 다운로드 받고, 업로드할 앱의 서명을 입혀줘야합니다. 즉, [서명키경로]에는 업로드할 앱의 키파일(.jks) 경로를 입력합니다.

예시 : /Users/admin/AndroidProject/myProject/testApp/key/test_keystore.jks


[signed.apk경로] : unsigned.apk가 서명된 후, 서명된 apk가 만들어질 경로와 해당 apk파일의 이름을 입렵합니다.

예시 :  /Users/admin/Desktop/my_signed.apk 입력하시면 데스크탑 폴더에 my_signed.apk가 생성됩니다.


[unsigned.apk경로] : 서명해야할 apk 경로, 즉 서명되지않은 apk 경로를 입력합니다.

예시 :  /Users/admin/Desktop/my_unsigned.apk 


옳바르게 입력하셨다면 Kestore password for signer #1: 보이실겁니다.

Key password를 입력하시면 signed.apk경로에 서명된 apk 파일이 생성됩니다!


읽어주셔서 감사합니다.



참고 

https://developer.android.com/studio/command-line/apksigner

https://developer.android.com/studio/publish/app-signing