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 단계 : 키 저장소 생성 (한 번만)
키 저장소를 한 번 생성하고이를 사용하여 unsigned
apk 에 서명해야합니다 . 에서 찾은 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를 확인 하여 앱에 서명하는 좋은 방법