Apk dosyamı imzalamaya çalışıyorum. Nasıl yapılacağını çözemiyorum. Derinlemesine iyi yönler bulamıyorum. Çok az programlama deneyimim var, bu yüzden herhangi bir yardım için minnettarım.
Apk dosyamı imzalamaya çalışıyorum. Nasıl yapılacağını çözemiyorum. Derinlemesine iyi yönler bulamıyorum. Çok az programlama deneyimim var, bu yüzden herhangi bir yardım için minnettarım.
Yanıtlar:
Kılavuz yeterince açık. Lütfen üzerinde çalıştıktan sonra hangi bölüme takıldığınızı belirtin, size şunları öneririm:
https://developer.android.com/studio/publish/app-signing.html
Tamam, referans olmadan veya etrafta tutulmadan küçük bir genel bakış, bu yüzden hatalar için biraz boşluk bırakın, ancak bu şekilde çalışır
Ayrıca bağlantıdan:
Eclipse ADT ile derleyin ve imzalayın
Eclipse'i ADT eklentisiyle birlikte kullanıyorsanız, imzalı bir .apk dosyasını dışa aktarmak için Dışa Aktarma Sihirbazını kullanabilirsiniz (ve hatta gerekirse yeni bir anahtar deposu oluşturabilirsiniz). Dışa Aktarma Sihirbazı, Keytool ve Jarsigner ile tüm etkileşimi sizin için gerçekleştirir; bu da, yukarıda açıklandığı gibi derlemek, imzalamak ve hizalamak için manuel prosedürler gerçekleştirmek yerine paketi bir GUI kullanarak imzalamanıza olanak tanır. Sihirbaz paketinizi derleyip imzaladıktan sonra, zip hizalama ile paket hizalamasını da gerçekleştirecektir. Dışa Aktarma Sihirbazı hem Keytool hem de Jarsigner'ı kullandığından, yukarıda İmzalama için Temel Kurulum'da açıklandığı gibi bilgisayarınızda erişilebilir olduklarından emin olmalısınız.
Eclipse'de imzalı ve hizalı bir .apk oluşturmak için:
- Paket Gezgini'nde projeyi seçin ve Dosya> Dışa Aktar'ı seçin.
Android klasörünü açın, Android Uygulamasını Dışa Aktar'ı seçin ve İleri'ye tıklayın.
Android Uygulamasını Dışa Aktar sihirbazı şimdi başlıyor ve bu sihirbaz, .apk dosyasını imzalayacağınız özel anahtarı seçme (veya yeni bir anahtar deposu ve özel anahtar oluşturma) dahil olmak üzere uygulamanızı imzalama sürecinde size rehberlik edecek.
- Dışa Aktarma Sihirbazını tamamlayın ve uygulamanız derlenecek, imzalanacak, hizalanacak ve dağıtıma hazır hale gelecektir.
-alias <alias_name> An alias for the key. Only the first 8 characters of the alias are used.
Bu sadece bir takma ad. İstersen bir isim. "firstkey" öneririm :-)
Bir APK'yi manuel olarak nasıl imzalayacağınıza dair bir kılavuz. (10/2016) 'daapk-signer
sunulan yeni ile ilgili bilgileri içerirbuild-tools 24.0.3
Bu aracı kullanın (Google'ın yeni apksigner'ını kullanır):
https://github.com/patrickfav/uber-apk-signer
Feragatname: Ben geliştiriciyim :)
Bir kez bir anahtar deposu oluşturmanız ve unsigned
apk'nizi imzalamak için kullanmanız gerekir . Bulunan JDK tarafından sağlananları kullanınkeytool
%JAVA_HOME%/bin/
keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app
zipalign
Örneğin %ANDROID_HOME%/sdk/build-tools/24.0.2/
, Android SDK tarafından sağlanan bir araç olan bu, APK'yı Play Store'a yüklemek istiyorsanız zorunlu bir optimizasyon adımıdır.
zipalign -p 4 my.apk my-aligned.apk
Not: Eski kullanırken jarsigner
size zipalign gereken SONRA imzalanması. Yeni apksigner
yöntemi kullanırken bunu imzalamadan ÖNCE yaparsınız (kafa karıştırıcı, biliyorum). Apksigner düzgün çalışmadan önce zipalign'ı çağırmak, çünkü apksigner APK hizalamasını ve sıkıştırmasını korur (jarsigner'ın aksine).
Sen edebilirsiniz doğrulamak uyum
zipalign -c 4 my-aligned.apk
Kullanım jarsigner
keytool gibi, JDK dağıtımı ile birlikte gelir bulundu %JAVA_HOME%/bin/
ve o kadar gibi kullanın:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my.keystore my-app.apk my_alias_name
ve ile doğrulanabilir
jarsigner -verify -verbose my_application.apk
Android 7.0, daha hızlı uygulama yükleme süreleri ve APK dosyalarında yetkisiz değişikliklere karşı daha fazla koruma sunan yeni bir uygulama imzalama şeması olan APK Signature Scheme v2'yi sunar (Daha fazla ayrıntı için buraya ve buraya bakın). Bu nedenle Google, (duh!) Adlı kendi apk imzalayıcısınıapksigner
uygulamıştır . Komut dosyası %ANDROID_HOME%/sdk/build-tools/24.0.3/
(.jar /lib
alt klasördedir) içinde bulunabilir. Bunu böyle kullan
apksigner sign --ks my.keystore my-app.apk --ks-key-alias alias_name
ve ile doğrulanabilir
apksigner verify my-app.apk
IntelliJ IDEA veya Android Studio kullanıcıları için şu adımları uygulayın:
* Menüden Build/Generate signed APK
* Bir anahtar deposu yolu oluşturmanız gerekir. İletişim kutusundan tıklayın Create new
. Anahtarlarınızı içeren bir jks dosyası oluşturacaksınız. Klasör seçin, bir şifre tanımlayın. Yani anahtar deponuz tamam.
* Takma ad, anahtar parolası, adınız vb. Kullanarak uygulamanız için yeni anahtar oluşturun.
* İleri'yi tıklayın.
* İletişim kutusundan Proguard'ı seçin veya seçmeyin .
İmzalı APK dosyanız hazır.
Yardım dosyası: https://www.jetbrains.com/idea/webhelp/generate-signed-apk-wizard.html
Merak etmeyin ...! Aşağıdaki adımları izleyin ve imzalı .apk dosyanızı alacaksınız. Ben de bunun için endişeliydim ama bu adımlar beni hayal kırıklığından uzaklaştırıyor. Başvurunuzu imzalamak için adımlar:
Eclipse'de projeye sağ tıklayın -> Android Araçları -> İmzalanmamış Uygulama Paketini Dışa Aktar (burada olduğu gibi GoogleDriveApp.apk'ımızı Masaüstüne aktarıyoruz)
Anahtar deponuzu ve jarsigner aracını kullanarak uygulamayı imzalayın (aşağıdaki adımları izleyin):
Cmd'yi açın -> "jarsigner.exe" dosyanızın bulunduğu dizini değiştirin (benim sistemimde olduğu gibi "C: \ Program Files \ Java \ jdk1.6.0_17 \ bin" konumunda olduğu gibi)
Şimdi cmd'de belwo komutunu girin:
jarsigner -verbose -keystore c: \ users \ android \ debug.keystore c: \ users \ pir fahim \ Desktops \ GoogleDriveApp.apk my_keystore_alias
Sizden şifrenizi girmenizi isteyecektir: Anahtar deposu için Parola Girin: Apk'nizi imzalayacaktır. İmzalamanın başarılı olduğunu doğrulamak için şunları çalıştırabilirsiniz:
jarsigner -c: \ users \ pir fahim \ Desktops \ GoogleDriveApp.apk doğrulayın
Şununla geri gelmelidir: kavanoz doğrulandı.
Yöntem 2
Eclipse'i ADT ile kullanıyorsanız, dosyayı derlemek, imzalamak, hizalamak ve dağıtım için hazırlamak kolaydır. Yapmanız gerekenler sadece bu adımları izleyin.
Bu adımlar projenizi derleyecek, imzalayacak ve sıkıştıracaktır ve artık projenizi dağıtmaya veya Google Play mağazasında yüklemeye hazırsınız.
Bir Android APK dosyasını manuel olarak imzalamak için şu üç komutu çalıştırın:
Anahtar deposu dosyası oluştur
keytool -genkey -v -keystore YOUR_KEYSTORE_NAME.keystore -alias ALIAS_NAME -keyalg RSA -keysize 2048 -validity 10000
APK dosyanızı kullanarak imzalayın jarsigner
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore KEYSTORE_FILE_PATH UNSIGNED_APK_PATH ALIAS_NAME
Zipalign aracını kullanarak İmzalı APK'yı hizalayın
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 -geçerlilik 10000
keytool -genkey -v -keystore id.keystore -alias MySignedApp -keyalg RSA -keysize 2048 -validity 10000
anahtar deposu şifresi: uygulamanız @ 123 anahtar şifresi: uygulamanız @ 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 -doğrula -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>
Doğrulama komutu sadece APK'nin doğru şekilde oluşturulup oluşturulmadığını ve imzalanıp imzalanmadığını kontrol etmek içindir!
Umarım bu herkese yardımcı olur :)