이미 컴파일 된 APK에 서명하는 방법 문제를 해결할 수있었습니다.

apktool (원본 소스 코드가 손실 되었기 때문에)으로 APK를 디코딩하여 레이아웃 xml 파일의 일부 문제를 해결할 수있었습니다. 그런 다음 apktool을 사용하여 다시 빌드했으며 내 기기에 설치하려고 할 때 (adb : adb install appname.apk 사용)이 오류가 발생했습니다.

[INSTALL_PARSE_FAILED_NO_CERTIFICATES]

원래 apk는 (eclipse IDE에서) 키 저장소에 의해 서명되었지만 이것은 그렇지 않습니다. Eclipse 외부의 원래 키스톤 파일로 어떻게 올바르게 서명 할 수 있습니까 ??



답변

사용하여 키 만들기

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

그런 다음 다음을 사용하여 apk에 서명하십시오.

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore my_application.apk alias_name

자세한 정보는 여기에서 확인하세요


답변

자동화 된 프로세스 :

이 도구 사용 (Google의 새로운 apksigner 사용) :

https://github.com/patrickfav/uber-apk-signer

면책 조항 : 개발자 임 🙂

수동 프로세스 :

1 단계 : 키 저장소 생성 (한 번만)

키 저장소를 한 번 생성하고이를 사용하여 unsignedapk 에 서명해야합니다 . 에서 찾은 JDK 에서 제공하는 사용keytool %JAVA_HOME%/bin/

keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app

2 단계 또는 4 단계 : Zipalign

zipalign Android SDK 에서 제공하는 도구 입니다 (예 : %ANDROID_HOME%/sdk/build-tools/24.0.2/APK를 Play 스토어에 업로드하려는 경우 필수 최적화 단계).

zipalign -p 4 my.apk my-aligned.apk

참고 : 이전을 사용할 때 jarsigner당신은 zipalign을 필요 AFTER의 서명. 새로운 apksigner방법을 사용할 때 서명 하기 전에 수행하십시오 (혼란 스럽습니다). apksigner가 APK 정렬 및 압축을 유지하기 때문에 apksigner 전에 zipalign을 호출하면 잘 작동합니다 (jarsigner와 달리).

정렬을 확인할 수 있습니다.

zipalign -c 4 my-aligned.apk

3 단계 : 서명 및 확인

빌드 도구 24.0.2 이하 사용

사용 jarsigner키 도구처럼, JDK의 배포와 함께 제공이 발견 %JAVA_HOME%/bin/하고 너무 좋아 사용

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my.keystore my-app.apk my_alias_name

다음으로 확인할 수 있습니다.

jarsigner -verify -verbose my_application.apk

빌드 도구 24.0.3 이상 사용

Android 7.0에는 APK 서명 체계 v2, 즉 더 빠른 앱 설치 시간과 APK 파일의 무단 변경에 대한 보호 기능을 제공하는 새로운 앱 서명 체계가 도입되었습니다 (자세한 내용은 여기여기 참조). 따라서 Google apksigner (duh!) 라는 자체 apk 서명자를 구현했습니다 . 스크립트 파일은 %ANDROID_HOME%/sdk/build-tools/24.0.3/(.jar은 /lib하위 폴더에 있음) 에서 찾을 수 있습니다 . 이렇게 사용하세요

apksigner sign --ks my.keystore my-app.apk --ks-key-alias alias_name

다음으로 확인할 수 있습니다.

apksigner verify my-app.apk

공식 문서는 여기에서 찾을 수 있습니다.


답변

가장 빠른 방법은 디버그 키 저장소로 서명하는 것입니다.

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore app.apk androiddebugkey -storepass android

또는 Windows :

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore %USERPROFILE%/.android/debug.keystore test.apk androiddebugkey -storepass android


답변

jarsigner를 사용하여 APK에 서명합니다. 원래 키 저장소로 서명 할 필요없이 새 키 저장소를 생성하기 만하면됩니다. 자세한 내용을 읽어 보세요 : http://developer.android.com/guide/publishing/app-signing.html


답변

모든 프로젝트에 대해 편집 할 bat 파일을 만들고 싶지 않거나 keytools 및 jarsigner 프로그램과 관련된 모든 명령을 기억하고 싶지 않고 한 프로세스에서 수행하고 싶은 사람들을 위해 다음 프로그램을 사용하십시오.

http://lukealderton.com/projects/programs/android-apk-signer-aligner.aspx

매번 모든 파일 위치를 입력해야하는 긴 프로세스에 지쳐서 만들었습니다.

이 프로그램은 구성을 저장할 수 있으므로 다음에 시작할 때 생성을 누르기 만하면 자동으로 처리됩니다. 그게 다야.

설치가 필요하지 않으며 완전히 이식 가능하며 구성을 동일한 폴더의 CSV로 저장합니다.


답변

업데이트 된 답변

https://shatter-box.com/knowledgebase/android-apk-signing-tool-apk-signer/ 확인

이전 답변

apk-signer를 확인 하여 앱에 서명하는 좋은 방법


답변