ฉันสามารถใช้ไฟล์ที่เก็บคีย์เดียวกันเพื่อลงนามแอปพลิเคชันที่แตกต่างกันสองแอปพลิเคชันได้หรือไม่


92

ฉันต้องอัปโหลดแอปพลิเคชันใหม่เพียงแค่การออกแบบที่แตกต่างกันเล็กน้อย เมื่อวานนี้ฉันสร้างไฟล์ที่เก็บคีย์เพื่อลงนามแอปพลิเคชัน ใช้แบบเดิมได้ไหม


5
ใช่คุณทำได้ (คุณเคยลองถามมาก่อนหรือไม่)
njzk2

คำตอบ:


98

คุณสามารถใช้keystoreสำหรับแอปพลิเคชันจำนวนเท่าใดก็ได้

ไม่จำเป็นต้องสร้างที่เก็บคีย์ใหม่


6
และสำหรับ 'นามแฝง' ฉันควรเขียนอะไร?
Dr.jacky

14
keystore ประกอบด้วยประชาชน / keypairs ส่วนตัวที่ทำขึ้นใบรับรองลงนาม ที่เก็บคีย์หนึ่งสามารถมีคู่คีย์ได้หลายคู่ 'นามแฝง' เป็นการอ้างอิงถึงคู่คีย์เฉพาะในที่เก็บคีย์ ที่เก็บคีย์เดียวสามารถเก็บคู่คีย์ทั้งหมดของคุณได้ แต่คุณควรมีหนึ่งคู่คีย์ต่อแอป ใช้ชื่อแอปที่คุณกำลังเซ็นชื่อเป็นนามแฝง คุณสามารถมีรหัสผ่านแยกกันสำหรับที่เก็บคีย์ของคุณและสำหรับแต่ละคู่คีย์ภายในนั้น คุณสามารถเปลี่ยนรหัสผ่านเหล่านี้และนำเข้า / ส่งออกคู่คีย์จากที่เก็บคีย์หรือเพิ่มคู่คีย์ใหม่ในที่เก็บคีย์ของคุณ ทั้งหมดนี้ทำได้โดยใช้คำสั่ง 'keytool' ของบรรทัดคำสั่ง ค้นดูสิ.
brycewjohnson

@brycewjohnson สามารถเพิ่มคู่ใหม่ในที่เก็บคีย์ผ่าน GUI ได้หรือไม่?
CinCout

44

จนถึงตอนนี้ฉันจะโต้แย้งคำตอบของฉันทามติ

ฉันยอมรับว่าสำหรับผู้เขียนแอปส่วนใหญ่การแชร์คีย์สโตร์ / ใบรับรอง / รหัสผ่านเดียวกันระหว่างแอปของคุณจะทำงานได้ดี สิ่งสำคัญคือการใช้ " ใบรับรองเดียวกันตลอดอายุการใช้งานที่คาดไว้ของแอปพลิเคชันของคุณ " เพื่อให้แอปอัปเกรดตัวเองได้

แต่ฉันสามารถนึกถึงเหตุผลที่ดีอย่างหนึ่งที่จะต้องมีที่เก็บคีย์แยกต่างหากสำหรับแอปหรือตระกูลแอปแยกกัน หากคุณคิดว่าคุณอาจต้องการขายแอปให้คนอื่นเพื่อเผยแพร่เป็นการอัปเกรดเป็นเวอร์ชันดั้งเดิมคุณจะต้องแชร์ที่เก็บคีย์และรหัสผ่านแบบหนึ่งเดียวของคุณกับพวกเขาก่อน อาจไม่ใช่ปัญหาใหญ่ แต่เป็นเรื่องที่น่ากังวลสำหรับคุณและอาจเป็นปัญหาเรื่องการตรวจสอบสถานะสำหรับผู้ซื้อรายใหญ่

นอกจากนี้ฉันไม่ได้อ่านบรรทัดเดียวกันในเอกสารเช่นเดียวกับที่ @ol_v_er อ่าน ฉันคิดว่าบรรทัดปัจจุบัน:

คุณควรลงนามแอปทั้งหมดของคุณด้วยใบรับรองเดียวกันตลอดอายุการใช้งานที่คาดไว้ของแอปพลิเคชันของคุณ

(โปรดทราบว่าเวอร์ชันปัจจุบันไม่มีเครื่องหมายจุลภาค) เป็นการเน้นย้ำว่าคำแนะนำ "อายุการใช้งาน" ใช้กับแอปทั้งหมดไม่ได้ชี้นำให้คุณใช้ใบรับรองเดียวกันสำหรับแอปทั้งหมดของคุณ


6
การเก็บคีย์สโตร์แยกกันสำหรับแต่ละแอพควรเป็นหนทางที่จะไป!
Sufian

คำแนะนำคือให้ใช้ไฟล์ต่างกันสำหรับแต่ละแอปใช่ไหม จะเกิดอะไรขึ้นถ้าคุณใช้ไฟล์ที่เก็บคีย์เดียวกันสำหรับแอพมากกว่าหนึ่งแอพ ดูเหมือนว่าจะทำให้เกิดปัญหาบางอย่างกับบริการ Firebase / Google ฉันเดาว่ามันเป็นไปไม่ได้ที่จะใช้อันใหม่ (อันอื่นสำหรับแต่ละแอพ) ถ้ามันเสร็จแล้วใช่มั้ย?
นักพัฒนา Android

42

เอกสารอย่างเป็นทางการบอกเรา:

โดยทั่วไปกลยุทธ์ที่แนะนำสำหรับนักพัฒนาทุกคนคือการลงนามแอปพลิเคชันทั้งหมดของคุณด้วยใบรับรองเดียวกันตลอดอายุการใช้งานที่คาดไว้ของแอปพลิเคชันของคุณ มีสาเหตุหลายประการที่คุณควรทำ ...

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

ใช่ลองลงชื่อแอปพลิเคชันทั้งหมดของคุณด้วยใบรับรองเดียวกัน


8
และสำหรับ 'นามแฝง' ฉันควรเขียนอะไร?
Dr.jacky

6
เพื่อให้ง่ายขึ้นให้ใช้แอปทั้งหมดของคุณเหมือนกัน
ol_v_er

19

ฉันต้องการเพิ่มคำชี้แจงที่นี่เนื่องจากคำถามนี้และคำตอบที่ให้ไว้ทำให้ฉันสับสน สิ่งสำคัญคือต้องทำความเข้าใจว่าที่เก็บคีย์คืออะไร

ที่เก็บคีย์เป็นเพียงวิธีการจัดเก็บคู่คีย์สาธารณะ / ส่วนตัวอย่างปลอดภัยซึ่งใช้ในการลงนามแอป Android ของคุณ ใช่คุณสามารถใช้ที่เก็บคีย์เดียวกันเพื่อลงนามหลายแอพได้โดยไม่มีปัญหา คุณยังสามารถใช้นามแฝงเดียวกัน (แต่ละนามแฝงคือใบรับรอง) เพื่อลงนามหลาย apks และจะใช้งานได้ อย่างไรก็ตามมีผลกระทบด้านความปลอดภัย หากนามแฝงเดียวของคุณถูกบุกรุกแอปทั้งหมดของคุณจะถูกบุกรุก

อย่างไรก็ตามหากคุณตั้งใจจะขายสิทธิ์ในแอปของคุณในวันหนึ่งการใช้นามแฝงเดียวกันสำหรับแอปทั้งหมดของคุณอาจไม่ใช่ความคิดที่ดี อย่างไรก็ตามการใช้ที่เก็บคีย์เดียวกันหากคุณใช้นามแฝงที่แตกต่างกันสำหรับแต่ละ apk อาจไม่ใช่ตัวเลือกที่ไม่ดีเสมอไป ฉันแน่ใจว่ามีวิธีที่คุณสามารถย้ายใบรับรองจากที่เก็บคีย์หนึ่งไปยังอีกที่หนึ่งเพื่อให้คุณสามารถให้คีย์ที่จำเป็นสำหรับใบรับรองนั้นแก่ผู้ซื้อของคุณได้อย่างปลอดภัย

เพื่อให้ชัดเจนมากที่เก็บคีย์ก็เป็นเพียงสื่อบันทึกข้อมูลสำหรับคีย์ ไม่มีส่วนสำคัญในกระบวนการลงนาม apk แต่ทำหน้าที่เก็บคีย์ที่ใช้ในการลงนาม apk เท่านั้น

อ้างอิง:

การทำความเข้าใจที่เก็บคีย์ใบรับรองและนามแฝง

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


1
โปรดอย่าโพสต์คำตอบที่เหมือนกันสำหรับคำถามหลายข้อ โพสต์คำตอบที่ดีหนึ่งคำตอบจากนั้นโหวต / ตั้งค่าสถานะเพื่อปิดคำถามอื่นที่ซ้ำกัน หากคำถามไม่ซ้ำกันให้ปรับแต่งคำตอบของคุณให้เหมาะกับคำถามนั้น
Paul Roub

ขอโทษ. ฉันไม่ใช่คนที่ชอบ SO
Anthony Stivers

1
ฉันมีตัวแทนไม่เพียงพอที่จะลงคะแนนให้กับรายการที่ซ้ำกัน ดังนั้นหากคุณต้องการให้คะแนนคำถามต่อไปนี้เป็นคำถามที่ซ้ำกันฉันคิดว่าคำถามนี้เหมาะสมที่สุดที่จะเป็นคำถามที่ไม่ซ้ำกัน เป็นอันดับแรกใน Google สำหรับคำหลักที่เกี่ยวข้องและมีคำตอบที่เกี่ยวข้องมากที่สุด stackoverflow.com/questions/13023509/... stackoverflow.com/questions/14973205/... stackoverflow.com/questions/10514597/...
แอนโธนี Stivers

รอ! ฉันจะใช้ที่เก็บคีย์เดียวกัน แต่ใช้นามแฝงต่างกันสำหรับแต่ละแอปได้อย่างไร!
Ziad H.

5

แน่นอน! คุณสามารถใช้ไฟล์ที่เก็บคีย์เดียวกันได้หลายครั้งที่คุณต้องการ การใช้ไฟล์ที่เก็บคีย์เดียวกันกับแอปพลิเคชันทั้งหมดที่คุณพัฒนาจะดีกว่าเสมอ ซึ่งจะช่วยได้หากคุณต้องการอัปเดตหรือแก้ไขแอปพลิเคชัน ในเวลานั้นคุณต้องลงนามใบสมัครของคุณด้วยรหัสเดียวกัน


2

ฉันลงนามแอปทั้งหมดของฉันโดยใช้ใบรับรองเดียวกัน (ที่เก็บคีย์) สิ่งนี้จะให้ประโยชน์หากฉันเปลี่ยนใจและต้องการให้แอปของฉันแชร์ข้อมูล

ดังที่คุณอาจทราบว่า Android ระบุแต่ละแอปด้วย UID หากแอปทั้งหมดของคุณลงนามโดยใบรับรองเดียวกันคุณสามารถขอให้ Android กำหนดรหัสผู้ใช้เดียวกันได้มากกว่าหนึ่งแอปและส่งต่อให้แอปทำงานในกระบวนการเดียวและแชร์ข้อมูล

จาก android doc android: sharedUserId

android: sharedUserId

ชื่อของ ID ผู้ใช้ Linux ที่จะแชร์กับแอปพลิเคชันอื่น โดยค่าเริ่มต้น Android จะกำหนดให้แต่ละแอปพลิเคชันมี ID ผู้ใช้เฉพาะของตนเอง อย่างไรก็ตามหากตั้งค่าแอตทริบิวต์นี้เป็นค่าเดียวกันสำหรับแอปพลิเคชันตั้งแต่สองแอปพลิเคชันขึ้นไปแอปพลิเคชันทั้งหมดจะแชร์ ID เดียวกันโดยมีการลงนามโดยใบรับรองเดียวกัน แอปพลิเคชันที่มี ID ผู้ใช้เดียวกันสามารถเข้าถึงข้อมูลของกันและกันและหากต้องการให้เรียกใช้ในกระบวนการเดียวกัน


1

อัปเดตล่าสุด

หากคุณต้องการลงทะเบียนในการลงนามแอปโดย Googleคุณต้องใช้คีย์ใหม่ที่แตกต่างกันเพื่อลงนาม apk หรือกลุ่มของคุณมิฉะนั้นหลังจากอัปโหลดคอนโซลของ Google จะแสดงข้อความแสดงข้อผิดพลาดว่า

คุณอัปโหลด APK หรือ Android App Bundle ที่ลงนามด้วยคีย์ที่ใช้ในการลงนาม APK ที่ส่งถึงผู้ใช้ด้วย เนื่องจากคุณลงทะเบียนใน App Signing โดย Google Play คุณควรลงนาม APK หรือ Android App Bundle ด้วยคีย์ใหม่ก่อนที่จะอัปโหลด


ฉันสามารถสร้างคีย์ใหม่ภายในหน้าจอการลงนาม android studio apk ได้ สร้างที่เก็บคีย์และนามแฝงใหม่และอาจใช้งานได้ มันได้ผลสำหรับฉัน
Numan Karaaslan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.