Cara menandatangani file apk Android

111

Saya mencoba untuk menandatangani file apk saya. Saya tidak tahu bagaimana melakukannya. Saya tidak dapat menemukan petunjuk mendalam yang bagus. Saya memiliki sedikit pengalaman pemrograman, jadi bantuan apa pun akan sangat kami hargai.

chriss
sumber
2
periksa ini: Cara menandatangani apk proyek Android
droid kid
2
Anda dapat menemukan tutorial bagus tentang ini di sini di androidcookers.co.cc/2012/06/…
Bratin
1
Saya menggunakan tutorial lengkap ini dari membuat keystore saya sendiri hingga mengekspor APK yang ditandatangani di Eclipse. mahadera.com/export-signed-android-apk-in-eclipse-ide
Jayson Tamayo

Jawaban:

84

Manualnya cukup jelas. Harap tentukan bagian mana yang Anda buntu setelah Anda menyelesaikannya, saya sarankan:

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

Oke, gambaran umum kecil tanpa referensi atau gerhana, jadi sisakan ruang untuk kesalahan, tetapi berfungsi seperti ini

  • Buka proyek Anda di eclipse
  • Tekan kanan-mouse -> alat (alat android?) -> ekspor aplikasi bertanda tangan (apk?)
  • Pergi melalui wizard:
  • Buat penyimpanan kunci baru. ingat kata sandi itu
  • Tanda tangani aplikasi Anda
  • Simpan, dll.

Juga, dari tautan:

Kompilasi dan tanda tangani dengan Eclipse ADT

Jika Anda menggunakan Eclipse dengan plugin ADT, Anda dapat menggunakan Export Wizard untuk mengekspor .apk bertanda tangan (dan bahkan membuat keystore baru, jika perlu). Export Wizard melakukan semua interaksi dengan Keytool dan Jarsigner untuk Anda, yang memungkinkan Anda untuk menandatangani paket menggunakan GUI daripada melakukan prosedur manual untuk mengkompilasi, menandatangani, dan menyelaraskan, seperti yang dibahas di atas. Setelah wizard telah menyusun dan menandatangani paket Anda, itu juga akan melakukan penyelarasan paket dengan zip align. Karena Wisaya Ekspor menggunakan Keytool dan Jarsigner, Anda harus memastikan bahwa keduanya dapat diakses di komputer Anda, seperti yang dijelaskan di atas dalam Pengaturan Dasar untuk Penandatanganan.

Untuk membuat .apk yang ditandatangani dan disejajarkan di Eclipse:

  1. Pilih proyek di Package Explorer dan pilih File> Export.
  2. Buka folder Android, pilih Ekspor Aplikasi Android, dan klik Berikutnya.

    Wisaya Ekspor Aplikasi Android sekarang dimulai, yang akan memandu Anda melalui proses penandatanganan aplikasi Anda, termasuk langkah-langkah untuk memilih kunci pribadi yang akan digunakan untuk menandatangani .apk (atau membuat keystore dan kunci pribadi baru).

  3. Selesaikan Export Wizard dan aplikasi Anda akan dikompilasi, ditandatangani, disejajarkan, dan siap untuk didistribusikan.
Nanne
sumber
Saya tidak mengerti bagaimana memulainya. Saya menggunakan versi eclipse: Helios Service Rilis 1
chriss
2
tapi tolong baca hal SELURUH. ada beberapa tip pada akhirnya untuk gerhana juga
Nanne
1
dalam pembuatan kunci apa yang harus saya masukkan untuk alias?
chriss
9
Apakah Anda sudah membaca manualnya? -alias <alias_name> An alias for the key. Only the first 8 characters of the alias are used.Itu hanya sebuah alias. Sebuah nama, jika Anda mau. saya sarankan "kunci pertama" :-)
Nanne
1
Maaf saya masih belum mengerti Bagaimana saya menggunakan alias ini. Apa tujuannya?
pengguna462990
37

Berikut adalah panduan tentang cara menandatangani APK secara manual. Ini termasuk info tentang yang baru apk-signerdiperkenalkan di build-tools 24.0.3 (10/2016)

Proses Otomatis:

Gunakan alat ini (menggunakan apksigner baru dari Google):

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

Penafian: Saya pengembangnya :)

Proses Manual:

Langkah 1: Buat Keystore (hanya sekali)

Anda perlu membuat keystore sekali dan menggunakannya untuk menandatangani unsignedapk Anda . Gunakan yang disediakan oleh JDK yang ada dikeytool %JAVA_HOME%/bin/

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

Langkah 2 atau 4: Zipalign

zipalign yang merupakan alat yang disediakan oleh Android SDK yang ditemukan di eg %ANDROID_HOME%/sdk/build-tools/24.0.2/adalah langkah pengoptimalan wajib jika Anda ingin mengunggah apk ke Play Store.

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

Catatan: saat menggunakan yang lama jarsignerAnda perlu zipalign SETELAH penandatanganan. Saat menggunakan apksignermetode baru, Anda melakukannya SEBELUM penandatanganan (membingungkan, saya tahu). Memanggil zipalign sebelum apksigner berfungsi dengan baik karena apksigner mempertahankan penyelarasan dan kompresi APK (tidak seperti jarsigner).

Anda dapat memverifikasi keselarasan dengan

zipalign -c 4 my-aligned.apk

Langkah 3: Masuk & Verifikasi

Menggunakan alat build 24.0.2 dan yang lebih lama

Gunakan jarsigneryang, seperti keytool, hadir dengan distribusi JDK yang ditemukan di %JAVA_HOME%/bin/dan menggunakannya seperti ini:

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

dan dapat diverifikasi dengan

jarsigner -verify -verbose my_application.apk

Menggunakan alat build 24.0.3 dan yang lebih baru

Android 7.0 memperkenalkan APK Signature Scheme v2, skema penandatanganan aplikasi baru yang menawarkan waktu penginstalan aplikasi lebih cepat dan lebih banyak perlindungan terhadap perubahan tidak sah pada file APK (Lihat di sini dan di sini untuk detail selengkapnya). Oleh karena itu Google menerapkan penandatangan apkapksigner mereka sendiri yang disebut (duh!) File skrip dapat ditemukan di %ANDROID_HOME%/sdk/build-tools/24.0.3/(.jar ada di /libsubfolder). Gunakan seperti ini

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

dan dapat diverifikasi dengan

apksigner verify my-app.apk

Dokumentasi resmi dapat ditemukan di sini.

Patrick Favre
sumber
10

Untuk pengguna IntelliJ IDEA atau Android Studio, lakukan langkah-langkah berikut:
* Dari menu Build/Generate signed APK
* Anda perlu membuat jalur keystore. Dari dialog klik Create new. Anda akan membuat file jks yang menyertakan kunci Anda. Pilih folder, tentukan kata sandi. Jadi keystore Anda ok.
* Buat kunci baru untuk aplikasi Anda dengan menggunakan alias, kata sandi kunci, nama Anda, dll.
* Klik berikutnya.
* Dari dialog pilih Proguard atau tidak.

File APK Anda yang ditandatangani sudah siap.

File bantuan: https://www.jetbrains.com/idea/webhelp/generate-signed-apk-wizard.html

trante
sumber
8

Jangan khawatir ...! Ikuti langkah-langkah di bawah ini dan Anda akan mendapatkan file .apk yang ditandatangani. Saya juga khawatir tentang itu, tetapi langkah ini membuat saya lepas dari frustrasi. Langkah-langkah untuk menandatangani aplikasi Anda:

  1. Ekspor paket unsigned:

Klik kanan pada proyek di Eclipse -> Android Tools -> Export Unsigned Application Package (seperti di sini kami mengekspor GoogleDriveApp.apk ke Desktop)

Tandatangani aplikasi menggunakan keystore dan alat jarsigner (ikuti langkah-langkah di bawah ini):

Buka cmd -> ubah direktori tempat "jarsigner.exe" Anda berada (seperti di sini di sistem saya, ada di "C: \ Program Files \ Java \ jdk1.6.0_17 \ bin"

Sekarang masukkan perintah belwo di cmd:

jarsigner -verbose -keystore c: \ users \ android \ debug.keystore c: \ users \ pir fahim \ Desktops \ GoogleDriveApp.apk my_keystore_alias

Ini akan meminta Anda untuk memberikan kata sandi Anda: Masukkan Frasa Sandi untuk keystore: Ini akan menandatangani apk Anda. Untuk memverifikasi bahwa penandatanganan berhasil Anda dapat menjalankan:

jarsigner -verify c: \ users \ pir fahim \ Desktops \ GoogleDriveApp.apk

Ini harus kembali dengan: jar diverifikasi.

Metode 2

Jika Anda menggunakan eclipse dengan ADT, maka mudah untuk menyusun, menandatangani, menyelaraskan, dan menyiapkan file untuk distribusi. Yang harus Anda lakukan cukup ikuti langkah-langkah ini.

  • File> Ekspor.
  • Ekspor aplikasi android
  • Jelajahi -> pilih proyek Anda
  • Berikutnya -> Berikutnya

Langkah-langkah ini akan mengumpulkan, menandatangani, dan menyelaraskan zip proyek Anda dan sekarang Anda siap untuk mendistribusikan proyek Anda atau mengunggah di Google Play Store.

Pir Fahim Shah
sumber
Itulah yang saya butuhkan, menggunakan alat pembuatan online baru dan harus menggunakan keystore saya sebelumnya, bukan yang baru dibuat. Satu-satunya hal yang saya lewatkan adalah ZIP MENYELARASKAN apk, jadi jika ada yang memiliki masalah yang sama, buka di sini stackoverflow.com/a/22682132/826194
Larzan
5

Proses Penandatanganan APK

Untuk menandatangani file APK Android secara manual, jalankan tiga perintah berikut:

  1. Buat file Keystore

    keytool -genkey -v -keystore YOUR_KEYSTORE_NAME.keystore -alias ALIAS_NAME -keyalg RSA -keysize 2048 -validity 10000
  2. Tanda tangani file APK Anda menggunakan jarsigner

    jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore KEYSTORE_FILE_PATH UNSIGNED_APK_PATH ALIAS_NAME
  3. Sejajarkan APK yang Ditandatangani menggunakan alat zipalign

    zipalign -v 4 JARSIGNED_APK_FILE_PATH ZIPALIGNED_SIGNED_APK_FILE_PATH

LANGKAH 1


Generate Keystore file

keytool -genkey -v -keystore YOUR_KEYSTORE_NAME.keystore -alias ALIAS_NAME -keyalg RSA -keysize 2048 -validitas 10000

Contoh:

keytool -genkey -v -keystore id.keystore -alias MySignedApp -keyalg RSA -keysize 2048 -validity 10000

kata sandi keystore: yourApp @ 123 kata sandi kunci: yourApp @ 123

CMD O / P

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>

LANGKAH 2


Sign your app with your private keystore using jarsigner

jarsigner -verbose -sigalg SHA1denganRSA -digestalg SHA1 -keystore KEYSTORE_FILE_PATH UNSIGNED_APK_PATH ALIAS_NAME

Contoh

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore D:\ru\SignedBuilds\MySignedApp\id.keystore D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk id

CMD O / P

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 -verifikasikan -verbose -certs JARSIGNED_APK_FILE_PATH

Contoh

jarsigner -verify -verbose -certs MySignedAppS1-release-unsigned.apk

CMD O / P

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>

LANGKAH 3


Sejajarkan paket APK final menggunakan zipalign

zipalign -v 4 JARSIGNED_APK_FILE_PATH ZIPALIGNED_SIGNED_APK_FILE_PATH_WITH_NAME_ofSignedAPK

Contoh

zipalign -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk

CMD O / P

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

Contoh

zipalign -c -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk

CMD O / P

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>

catatan:

Perintah verifikasi hanya untuk memeriksa apakah APK dibuat dan ditandatangani dengan benar!

Referensi

Saya harap ini akan membantu semua :)

Rupesh Yadav
sumber
2

Saya mengalami masalah ini dan diselesaikan dengan memeriksa versi min sdk di manifes. Itu diatur ke 15 (ICS), tetapi ponsel saya menjalankan 10 (Gingerbread)

RJL
sumber