내 apk 파일에 서명하려고합니다. 어떻게해야할지 모르겠어요. 좋은 심층 방향을 찾을 수 없습니다. 프로그래밍 경험이 거의 없으므로 도움을 주시면 감사하겠습니다.
내 apk 파일에 서명하려고합니다. 어떻게해야할지 모르겠어요. 좋은 심층 방향을 찾을 수 없습니다. 프로그래밍 경험이 거의 없으므로 도움을 주시면 감사하겠습니다.
답변:
설명서는 충분히 명확합니다. 당신이 그것을 통해 작업 한 후에 어떤 부분이 붙어 있는지 지정하십시오.
https://developer.android.com/studio/publish/app-signing.html
좋습니다. 참조 나 일식이없는 작은 개요이므로 오류를위한 공간을 남겨 두세요.하지만 이렇게 작동합니다.
또한 링크에서 :
Eclipse ADT로 컴파일 및 서명
ADT 플러그인과 함께 Eclipse를 사용하는 경우 내보내기 마법사를 사용하여 서명 된 .apk를 내보낼 수 있습니다 (필요한 경우 새 키 저장소를 만들 수도 있음). 내보내기 마법사는 Keytool 및 Jarsigner와의 모든 상호 작용을 수행하므로 위에서 설명한대로 컴파일, 서명 및 정렬하는 수동 절차를 수행하는 대신 GUI를 사용하여 패키지에 서명 할 수 있습니다. 마법사가 패키지를 컴파일하고 서명하면 zip 정렬을 사용하여 패키지 정렬도 수행합니다. 내보내기 마법사는 Keytool과 Jarsigner를 모두 사용하므로 서명을위한 기본 설정에서 설명한대로 컴퓨터에서 액세스 할 수 있는지 확인해야합니다.
Eclipse에서 서명되고 정렬 된 .apk를 만들려면 :
- 패키지 탐색기에서 프로젝트를 선택하고 파일> 내보내기를 선택합니다.
Android 폴더를 열고 Android 애플리케이션 내보내기를 선택한 후 다음을 클릭하십시오.
이제 Android 애플리케이션 내보내기 마법사가 시작되어 .apk에 서명 할 개인 키를 선택하거나 새 키 저장소 및 개인 키를 만드는 단계를 포함하여 애플리케이션 서명 프로세스를 안내합니다.
- 내보내기 마법사를 완료하면 애플리케이션이 컴파일, 서명, 정렬되고 배포 할 준비가됩니다.
-alias <alias_name> An alias for the key. Only the first 8 characters of the alias are used.
그냥 별칭 일뿐입니다. 당신이 원한다면 이름. 나는 "firstkey":-) 좋을 것
다음은 APK에 수동으로 서명하는 방법에 대한 가이드입니다. (2016apk-signer
년 10 월)에 도입 된 새로운 정보가 포함되어 있습니다.build-tools 24.0.3
이 도구 사용 (Google의 새로운 apksigner 사용) :
https://github.com/patrickfav/uber-apk-signer
면책 조항 : 개발자 임 :)
키 저장소를 한 번 생성하고이를 사용하여 unsigned
apk 에 서명해야합니다 . 에있는 JDK 에서 제공하는 사용keytool
%JAVA_HOME%/bin/
keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app
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
사용 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
Android 7.0에서는 앱 설치 시간을 단축하고 APK 파일의 무단 변경에 대한 보호를 강화하는 새로운 앱 서명 체계 인 APK 서명 체계 v2를 도입했습니다 (자세한 내용은 여기 와 여기 참조). 따라서 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
IntelliJ IDEA 또는 Android Studio 사용자의 경우 다음 단계를 수행하십시오.
* 메뉴에서 Build/Generate signed APK
* 키 저장소 경로를 만들어야합니다. 대화 상자에서를 클릭 Create new
합니다. 키를 포함하는 jks 파일을 생성합니다. 폴더를 선택하고 암호를 정의하십시오. 그래서 당신의 키 저장소는 괜찮습니다.
* 별칭, 키 암호, 이름 등을 사용하여 응용 프로그램에 대한 새 키를 만듭니다.
* 다음을 클릭합니다.
* 대화 상자에서 Proguard 를 선택하거나 선택 하지 않습니다.
서명 된 APK 파일이 준비되었습니다.
도움말 파일 : https://www.jetbrains.com/idea/webhelp/generate-signed-apk-wizard.html
걱정마 ...! 아래 단계를 따르면 서명 된 .apk 파일을 얻을 수 있습니다. 나도 그것에 대해 걱정했지만,이 단계는 나를 좌절에서 벗어나게한다. 신청서에 서명하는 단계 :
Eclipse에서 프로젝트를 마우스 오른쪽 버튼으로 클릭-> Android 도구-> 서명되지 않은 애플리케이션 패키지 내보내기 (예 : GoogleDriveApp.apk를 데스크톱으로 내보냄)
키 저장소 및 jarsigner 도구를 사용하여 애플리케이션에 서명합니다 (아래 단계 수행).
cmd를 엽니 다-> "jarsigner.exe"가있는 디렉토리를 변경합니다 (예를 들어 내 시스템의 "C : \ Program Files \ Java \ jdk1.6.0_17 \ bin"에 있습니다.
이제 cmd에 belwo 명령을 입력하십시오.
jarsigner -verbose -keystore c : \ users \ android \ debug.keystore c : \ users \ pir fahim \ Desktops \ GoogleDriveApp.apk my_keystore_alias
암호를 입력하라는 메시지가 표시됩니다. 키 저장소의 암호 입력 : APK에 서명합니다. 서명이 성공했는지 확인하려면 다음을 실행할 수 있습니다.
jarsigner-c : \ users \ pir fahim \ Desktops \ GoogleDriveApp.apk 확인
다음과 함께 반환되어야합니다. jar 확인.
방법 2
ADT와 함께 eclipse를 사용하는 경우 파일을 컴파일, 서명, 정렬하고 배포 할 준비가 간단합니다.이 단계를 따르기 만하면됩니다.
이 단계는 프로젝트를 컴파일, 서명 및 압축하여 정렬하므로 이제 프로젝트를 배포하거나 Google Play 스토어에 업로드 할 준비가되었습니다.
Android APK 파일에 수동으로 서명하려면 다음 세 명령을 실행하십시오.
키 저장소 파일 생성
keytool -genkey -v -keystore YOUR_KEYSTORE_NAME.keystore -alias ALIAS_NAME -keyalg RSA -keysize 2048 -validity 10000
다음을 사용하여 APK 파일에 서명 jarsigner
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore KEYSTORE_FILE_PATH UNSIGNED_APK_PATH ALIAS_NAME
zipalign 도구를 사용하여 서명 된 APK 정렬
zipalign -v 4 JARSIGNED_APK_FILE_PATH ZIPALIGNED_SIGNED_APK_FILE_PATH
Generate Keystore file
keytool -genkey -v -keystore YOUR_KEYSTORE_NAME.keystore -alias ALIAS_NAME -keyalg RSA -keysize 2048 -validity 10000
keytool -genkey -v -keystore id.keystore -alias MySignedApp -keyalg RSA -keysize 2048 -validity 10000
키 저장소 비밀번호 : yourApp @ 123 키 비밀번호 : yourApp @ 123
D:\ru\SignedBuilds\MySignedApp>keytool -genkey -v -keystore id.keystore
-alias MySignedApp -keyalg RSA -keysize 2048 -validity 10000
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: MySignedApp Sample
What is the name of your organizational unit?
[Unknown]: Information Technology
What is the name of your organization?
[Unknown]: MySignedApp Demo
What is the name of your City or Locality?
[Unknown]: Mumbai
What is the name of your State or Province?
[Unknown]: Maharashtra
What is the two-letter country code for this unit?
[Unknown]: IN
Is CN=MySignedApp Demo, OU=Information Technology, O=MySignedApp Demo, L=Mumbai, ST=Maharashtra, C=IN corr
ect?
[no]: y
Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 10,
000 days
for: CN=MySignedApp Demo, OU=Information Technology, O=MySignedApp Demo, L=Mumbai, ST=Maharashtra,
C=IN
Enter key password for <MySignedApp>
(RETURN if same as keystore password):
Re-enter new password:
[Storing id.keystore]
D:\ru\SignedBuilds\MySignedApp>
Sign your app with your private keystore using jarsigner
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore KEYSTORE_FILE_PATH UNSIGNED_APK_PATH ALIAS_NAME
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore D:\ru\SignedBuilds\MySignedApp\id.keystore D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk id
D:\ru\SignedBuilds\MySignedApp>jarsigner -verbose -sigalg SHA1withRSA -
digestalg SHA1 -keystore D:\ru\SignedBuilds\MySignedApp\id.keystore D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk id ---
ect
Enter Passphrase for keystore:
adding: META-INF/MANIFEST.MF
adding: META-INF/---.SF
adding: META-INF/---.RSA
signing: AndroidManifest.xml
.....
signing: classes.dex
signing: lib/commons-codec-1.6.jar
signing: lib/armeabi/libkonyjsvm.so
jar signed.
Warning:
No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not
be able to validate this jar after the signer certificate's expiration date (2044-02-07) or after an
y future revocation date.
D:\ru\SignedBuilds\MySignedApp>
Verify that your APK is signed
jarsigner -verify -verbose -certs JARSIGNED_APK_FILE_PATH
jarsigner -verify -verbose -certs MySignedAppS1-release-unsigned.apk
D:\ru\SignedBuilds\MySignedApp>jarsigner -verify -verbose -certs MySignedAppS1-release-unsigned.apk
s = signature was verified
m = entry is listed in manifest
k = at least one certificate was found in keystore
i = at least one certificate was found in identity scope
jar verified.
Warning:
This jar contains entries whose certificate chain is not validated.
This jar contains signatures that does not include a timestamp. Without a timestamp, users may not b
e able to validate this jar after the signer certificate's expiration date (2044-02-09) or after any
future revocation date.
D:\ru\SignedBuilds\MySignedApp>
zipalign -v 4 JARSIGNED_APK_FILE_PATH ZIPALIGNED_SIGNED_APK_FILE_PATH_WITH_NAME_ofSignedAPK
zipalign -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk
D:\Android\android-sdk\build-tools\19.1.0>zipalign -v 4 D:\ru\ru_doc\Signed_apk\MySignedApp\28.09.16
_prod_playstore\MySignedAppS1-release-unsigned.apk D:\ru\ru_doc\Signed_apk\MySignedApp\28.09.16_prod
_playstore\MySignedApp.apk
Verifying alignment of D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk (
4)...
4528613 classes.dex (OK - compressed)
5656594 lib/commons-codec-1.6.jar (OK - compressed)
5841869 lib/armeabi/libkonyjsvm.so (OK - compressed)
Verification succesful
D:\Android\android-sdk\build-tools\19.1.0>
Verify that your APK is Aligned successfully
zipalign -c -v 4 YOUR_APK_PATH
zipalign -c -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk
D:\Android\android-sdk\build-tools\19.1.0>zipalign -c -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk
Verifying alignment of D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk (
4)...
4453984 res/drawable/zoomout.png (OK)
4454772 res/layout/tabview.xml (OK - compressed)
4455243 res/layout/wheel_item.xml (OK - compressed)
4455608 resources.arsc (OK)
4470161 classes.dex (OK - compressed)
5597923 lib/commons-codec-1.6.jar (OK - compressed)
5783198 lib/armeabi/libkonyjsvm.so (OK - compressed)
Verification succesful
D:\Android\android-sdk\build-tools\19.1.0>
확인 명령은 APK가 올바르게 빌드되고 서명되었는지 확인하는 것입니다!
나는 이것이 모두에게 도움이되기를 바랍니다. :)