Dapatkah saya menggunakan file keystore yang sama untuk menandatangani dua aplikasi berbeda?

92

Saya harus mengupload aplikasi baru, hanya saja desainnya yang sedikit berbeda. Kemarin saya membuat file keystore untuk menandatangani aplikasi. Bisakah saya menggunakan yang sama?

Raluca Lucaci
sumber
5
ya Anda bisa (juga, apakah Anda mencoba sebelum bertanya?)
njzk2

Jawaban:

98

Anda dapat menggunakannya keystoreuntuk sejumlah aplikasi.

Tidak perlu membuat keystore baru.

Chirag
sumber
6
Dan untuk 'Alias', apa yang harus saya tulis?
Dr. jacky
14
Keystore BERISI pasangan kunci publik / pribadi yang membentuk sertifikat penandatanganan. Satu keystore dapat berisi banyak pasangan kunci. 'Alias' adalah referensi ke pasangan kunci tertentu di keystore. Satu keystore dapat menampung semua pasangan kunci Anda, tetapi Anda harus memiliki satu keypair per aplikasi. Gunakan nama aplikasi yang Anda tanda tangani sebagai alias. Anda dapat memiliki kata sandi terpisah untuk keystore dan untuk setiap pasangan kunci di dalamnya. Anda dapat mengubah sandi ini dan mengimpor / mengekspor pasangan kunci dari keystore atau menambahkan pasangan kunci baru ke keystore Anda. Ini semua dilakukan dengan perintah 'keytool' baris perintah. Lihat itu.
brycewjohnson
@brycewjohnson Dapatkah pasangan baru ditambahkan ke keystore melalui GUI?
CinCout
44

Saya akan membuat argumen tandingan untuk jawaban konsensus sejauh ini.

Saya setuju bahwa untuk sebagian besar penulis aplikasi di sebagian besar waktu, berbagi keystore / sertifikat / kata sandi yang sama di antara aplikasi Anda akan berfungsi dengan baik. Hal terpenting adalah menggunakan " sertifikat yang sama sepanjang umur aplikasi yang diharapkan " sehingga aplikasi dapat meningkatkan dirinya sendiri.

Tapi saya bisa memikirkan satu alasan yang sangat bagus untuk memiliki keystore terpisah untuk aplikasi atau kelompok aplikasi terpisah. Jika Anda merasa ingin menjual aplikasi kepada orang lain untuk dipublikasikan sebagai upgrade ke aslinya, Anda harus membagikan keystore dan kata sandi satu-satunya dengan mereka untuk melakukannya. Mungkin bukan masalah besar tetapi sedikit kekhawatiran bagi Anda dan, mungkin, masalah uji tuntas bagi pembeli yang cukup besar.

Selain itu, saya benar-benar tidak membaca baris yang sama dalam dokumentasi dengan cara yang sama seperti @ol_v_er. Saya pikir baris saat ini:

Anda harus menandatangani semua aplikasi Anda dengan sertifikat yang sama selama perkiraan umur aplikasi Anda.

(perhatikan kurangnya koma dalam versi saat ini) hanya menekankan bahwa rekomendasi 'seumur hidup' berlaku untuk semua aplikasi, tidak benar-benar mengarahkan Anda untuk menggunakan sertifikat yang sama untuk semua aplikasi Anda.

Anne Gunn
sumber
6
Menjaga keystore terpisah untuk setiap aplikasi harus menjadi cara yang tepat!
Sufian
Rekomendasinya adalah menggunakan file yang berbeda untuk setiap aplikasi, bukan? Apa yang terjadi jika Anda menggunakan file keystore yang sama untuk lebih dari satu aplikasi? Tampaknya menyebabkan beberapa masalah dengan layanan Firebase / Google. Saya kira tidak mungkin menggunakan yang baru (yang berbeda untuk setiap aplikasi) jika sudah selesai, bukan?
Pengembang android
42

Dokumentasi resmi memberi tahu kami:

Secara umum, strategi yang disarankan untuk semua pengembang adalah menandatangani semua aplikasi Anda dengan sertifikat yang sama, sepanjang umur aplikasi yang diharapkan. Ada beberapa alasan mengapa Anda harus melakukannya ...

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

Jadi ya, cobalah untuk menandatangani semua aplikasi Anda dengan sertifikat yang sama.

ol_v_er
sumber
8
Dan untuk 'Alias', apa yang harus saya tulis?
Dr. jacky
6
Untuk membuatnya sederhana, gunakan juga hal yang sama untuk semua aplikasi Anda.
ol_v_er
19

Saya ingin menambahkan beberapa klarifikasi di sini, karena pertanyaan dan jawaban yang diberikan ini membuat saya bingung. Sangat penting untuk memahami apa sebenarnya keystore itu.

Keystore hanyalah sarana untuk menyimpan pasangan kunci publik / pribadi yang digunakan untuk menandatangani APK Android Anda dengan aman. Jadi ya, Anda dapat menggunakan keystore yang sama untuk menandatangani banyak APK, tanpa masalah. Anda juga dapat menggunakan alias yang sama (setiap alias adalah sertifikat) untuk menandatangani beberapa APK, dan ini akan berfungsi. Namun, ini memiliki implikasi keamanan. Jika alias tunggal Anda disusupi, semua aplikasi Anda akan disusupi.

Namun, jika Anda bermaksud menjual hak atas aplikasi Anda suatu hari nanti, menggunakan alias yang sama untuk semua aplikasi Anda mungkin bukan ide yang baik. Namun, menggunakan keystore yang sama, asalkan Anda menggunakan alias yang berbeda untuk setiap apk, belum tentu merupakan opsi yang buruk. Saya yakin ada cara untuk memindahkan sertifikat dari satu keystore ke yang lain, sehingga Anda dapat memberikan kunci yang diperlukan hanya untuk sertifikat tersebut kepada pembeli dengan aman.

Untuk membuatnya sangat jelas, keystore hanyalah media penyimpanan untuk kunci. Itu tidak memainkan peran aktual dalam proses penandatanganan apk, tetapi hanya berfungsi untuk menyimpan kunci yang sebenarnya digunakan untuk menandatangani apk.

Referensi:

Memahami keystore, sertifikat, dan alias

https://www.digitalocean.com/community/tutorials/java-keytool-essentials-working-with-java-keystores

Anthony Stivers
sumber
1
Harap jangan memposting jawaban yang identik untuk beberapa pertanyaan. Posting satu jawaban bagus, lalu pilih / tandai untuk menutup pertanyaan lain sebagai duplikat. Jika pertanyaannya bukan duplikat, sesuaikan jawaban Anda dengan pertanyaan tersebut.
Paul Roub
Permintaan maaf. Saya seorang noob untuk SO.
Anthony Stivers
1
Saya tidak memiliki cukup perwakilan untuk memilih duplikat. Jadi jika Anda ingin memilih pertanyaan berikut sebagai duplikat, saya rasa pertanyaan ini adalah yang paling tepat untuk menjadi pertanyaan bukan duplikat. Ini adalah peringkat pertama di Google untuk kata kunci yang relevan, dan memiliki jawaban paling relevan. stackoverflow.com/questions/13023509/… stackoverflow.com/questions/14973205/… stackoverflow.com/questions/10514597/…
Anthony Stivers
Tunggu! Bagaimana saya bisa menggunakan keystore yang sama tetapi dengan alias berbeda untuk setiap aplikasi ?!
Ziad H.
5

Tentu saja! Anda dapat menggunakan file keystore yang sama sebanyak yang Anda inginkan. Itu selalu lebih baik untuk menggunakan file keystore yang sama untuk semua aplikasi yang Anda kembangkan. Itu akan membantu jika Anda ingin memperbarui atau memodifikasi aplikasi. Pada saat itu Anda perlu menandatangani aplikasi Anda dengan kunci yang sama.

Rohit
sumber
2

Saya menandatangani semua aplikasi saya menggunakan sertifikat yang sama (keystore). Ini memberi keuntungan jika saya berubah pikiran dan ingin aplikasi saya membagikan datanya.

Seperti yang mungkin Anda ketahui, Android mengidentifikasi setiap aplikasi dengan UID. Jika semua aplikasi Anda ditandatangani dengan sertifikat yang sama, Anda dapat meminta android untuk menetapkan id pengguna yang sama lebih dari satu aplikasi dan kemudian membuatnya berjalan dalam satu proses dan membagikan data.

Dari android doc android: sharedUserId

android: sharedUserId

Nama ID pengguna Linux yang akan dibagikan dengan aplikasi lain. Secara default, Android memberikan setiap aplikasi ID pengguna uniknya sendiri. Namun, jika atribut ini disetel ke nilai yang sama untuk dua atau lebih aplikasi, semuanya akan berbagi ID yang sama - asalkan mereka juga ditandatangani dengan sertifikat yang sama. Aplikasi dengan ID pengguna yang sama dapat mengakses data satu sama lain dan, jika diinginkan, berjalan dalam proses yang sama

sujith
sumber
1

Pembaruan Terbaru

Jika Anda ingin mendaftar dalam penandatanganan Aplikasi oleh google, Anda harus menggunakan kunci baru yang berbeda untuk menandatangani apk atau bundel Anda jika tidak setelah mengunggah konsol Google akan memberi Anda pesan kesalahan yang mengatakan

Anda mengupload APK atau Android App Bundle yang ditandatangani dengan kunci yang juga digunakan untuk menandatangani APK yang dikirimkan ke pengguna. Karena Anda terdaftar dalam Penandatanganan Aplikasi oleh Google Play, Anda harus menandatangani APK atau Android App Bundle dengan kunci baru sebelum Anda mengunggahnya

Riya Parmar
sumber
Saya dapat membuat kunci baru di dalam layar penandatanganan apk studio android. Buat keystore dan alias baru dan ini mungkin berhasil. Itu berhasil untuk saya.
Numan Karaaslan