Tôi có thể sử dụng cùng một tệp kho khóa để ký hai ứng dụng khác nhau không?


89

Tôi phải tải lên một ứng dụng mới, Chỉ là thiết kế hơi khác một chút. Hôm qua tôi đã tạo tệp kho khóa để ký đơn đăng ký. Tôi có thể sử dụng giống nhau không?


5
có bạn có thể (cũng được, cậu thử trước khi yêu cầu?)
njzk2

Câu trả lời:


96

Bạn có thể sử dụng nó keystorecho bất kỳ số lượng ứng dụng nào.

Không cần tạo kho khóa mới.


6
Và đối với 'Bí danh', tôi nên viết gì?
Dr.jacky

12
Một keystore CHỨA các keypairs public / private tạo nên một giấy chứng nhận ký. Một kho khóa có thể chứa nhiều cặp khóa. 'Bí danh' là một tham chiếu đến một cặp khóa cụ thể trong kho khóa. Một kho khóa có thể chứa tất cả các cặp khóa của bạn, nhưng bạn nên có một cặp khóa cho mỗi ứng dụng. Sử dụng tên của ứng dụng bạn đang ký làm bí danh. Bạn có thể có mật khẩu riêng cho kho khóa của mình và cho từng cặp khóa trong đó. Bạn có thể thay đổi các mật khẩu này và nhập / xuất các cặp khóa từ kho khóa hoặc thêm các cặp khóa mới vào kho khóa của mình. Tất cả điều này được thực hiện với lệnh dòng lệnh 'keytool'. Tìm kiếm.
brycewjohnson

@brycewjohnson Có thể thêm các cặp mới vào kho khóa thông qua GUI không?
CinCout

43

Cho đến nay, tôi sẽ lập luận ngược lại với câu trả lời đồng thuận.

Tôi đồng ý rằng đối với hầu hết các tác giả ứng dụng, việc chia sẻ cùng một kho khóa / chứng chỉ / mật khẩu giữa các ứng dụng của bạn sẽ hoạt động tốt. Điều quan trọng là sử dụng " cùng một chứng chỉ trong suốt vòng đời dự kiến ​​của các ứng dụng của bạn " để ứng dụng có thể tự nâng cấp.

Nhưng tôi có thể nghĩ ra một lý do rất tốt để có kho khóa riêng cho các ứng dụng hoặc nhóm ứng dụng riêng biệt. Nếu bạn nghĩ rằng bạn có thể muốn bán một ứng dụng cho người khác để họ xuất bản dưới dạng bản nâng cấp lên bản gốc, bạn sẽ phải chia sẻ kho khóa và mật khẩu một và duy nhất của mình với họ để làm như vậy. Có lẽ không phải là một vấn đề lớn nhưng một chút lo lắng đối với bạn và có lẽ là vấn đề thẩm định đối với một người mua đủ lớn.

Ngoài ra, tôi thực sự không đọc dòng tương tự trong tài liệu theo cách giống như @ol_v_er. Tôi nghĩ dòng hiện tại:

Bạn nên ký tất cả các ứng dụng của mình bằng cùng một chứng chỉ trong suốt thời gian tồn tại dự kiến ​​của các ứng dụng của bạn.

(lưu ý rằng việc thiếu dấu phẩy trong phiên bản hiện tại) chỉ đơn giản là nhấn mạnh rằng đề xuất 'thời gian tồn tại' áp dụng cho tất cả các ứng dụng, không thực sự hướng bạn sử dụng cùng một chứng chỉ cho tất cả các ứng dụng của bạn.


6
Giữ kho lưu trữ khóa riêng biệt cho từng ứng dụng là cách để đi!
Sufian

42

Tài liệu chính thức cho chúng tôi biết:

Nói chung, chiến lược được đề xuất cho tất cả các nhà phát triển là ký tất cả các ứng dụng của bạn bằng cùng một chứng chỉ, trong suốt thời gian tồn tại dự kiến ​​của các ứng dụng của bạn. Có một số lý do tại sao bạn nên làm như vậy ...

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

Vì vậy, có, hãy cố gắng ký tất cả các ứng dụng của bạn bằng cùng một chứng chỉ.


8
Và đối với 'Bí danh', tôi nên viết gì?
Dr.jacky

6
Để làm cho nó đơn giản, cũng sử dụng như vậy cho tất cả các ứng dụng của bạn.
ol_v_er

18

Tôi muốn thêm một số làm rõ ở đây, bởi vì câu hỏi này và các câu trả lời được cung cấp dẫn đến sự nhầm lẫn cho tôi. Điều quan trọng là phải hiểu kho khóa thực sự là gì.

Kho khóa chỉ là một phương tiện để lưu trữ an toàn cặp khóa công khai / riêng tư được sử dụng để ký các ứng dụng Android của bạn. Vì vậy, có, bạn có thể sử dụng cùng một kho khóa để ký nhiều apk mà không gặp vấn đề gì. Bạn cũng có thể sử dụng cùng một bí danh (mỗi bí danh là một chứng chỉ) để ký nhiều apk và nó sẽ hoạt động. Tuy nhiên, nó có ý nghĩa bảo mật. Nếu bí danh duy nhất của bạn bị xâm phạm, thì tất cả các ứng dụng của bạn sẽ bị xâm phạm.

Tuy nhiên, nếu bạn có ý định bán quyền đối với các ứng dụng của mình vào một ngày nào đó, thì việc sử dụng cùng một bí danh cho tất cả các ứng dụng của bạn có thể không phải là một ý kiến ​​hay. Tuy nhiên, việc sử dụng cùng một kho khóa, với điều kiện bạn sử dụng một bí danh khác nhau cho mỗi apk, có thể không nhất thiết là một lựa chọn tồi. Tôi chắc rằng có một cách để bạn có thể di chuyển chứng chỉ từ kho khóa này sang kho khóa khác để bạn có thể an toàn cung cấp các khóa cần thiết cho chỉ chứng chỉ đó cho người mua của mình.

Nói một cách rất rõ ràng, kho khóa chỉ là như vậy, một phương tiện lưu trữ cho các khóa. Nó không đóng vai trò thực sự nào trong quá trình ký apk mà chỉ đóng vai trò lưu trữ các khóa thực sự được sử dụng để ký apk.

Người giới thiệu:

Hiểu kho khóa, chứng chỉ và bí danh

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


1
Vui lòng không đăng các câu trả lời giống hệt nhau cho nhiều câu hỏi. Đăng một câu trả lời hay, sau đó bỏ phiếu / gắn cờ để đóng các câu hỏi khác là trùng lặp. Nếu câu hỏi không trùng lặp, hãy điều chỉnh câu trả lời của bạn cho phù hợp với câu hỏi.
Paul Roub

Xin lỗi. Tôi là một người thích SO.
Anthony Stivers

1
Tôi không có đủ đại diện để bỏ phiếu cho một bản sao. Vì vậy, nếu bạn muốn bình chọn những câu hỏi sau là trùng lặp, tôi cảm thấy câu hỏi này là thích hợp nhất để trở thành câu hỏi không trùng lặp. Đây là xếp hạng đầu tiên trên Google cho các từ khóa có liên quan và có các câu trả lời phù hợp nhất. stackoverflow.com/questions/13023509/… stackoverflow.com/questions/14973205/… stackoverflow.com/questions/10514597/…
Anthony Stivers

Chờ đợi! Làm cách nào tôi có thể sử dụng cùng một kho khóa nhưng với bí danh khác nhau cho mỗi ứng dụng ?!
Ziad H.

5

Tất nhiên! Bạn có thể sử dụng cùng một tệp kho khóa bao nhiêu lần bạn muốn. Tốt hơn hết là sử dụng cùng một tệp kho khóa cho tất cả các ứng dụng bạn phát triển. Điều đó sẽ hữu ích nếu bạn muốn cập nhật hoặc sửa đổi ứng dụng. Lúc đó bạn cần ký vào đơn đăng ký của mình bằng cùng một khóa.


2

Tôi ký tất cả các ứng dụng của mình bằng cùng một chứng chỉ (kho khóa). Điều này mang lại lợi thế nếu tôi thay đổi ý định và muốn các ứng dụng của mình chia sẻ dữ liệu của chúng.

Như bạn có thể biết, Android xác định từng ứng dụng bằng UID. Nếu tất cả các ứng dụng của bạn được ký bởi cùng một chứng chỉ, bạn có thể yêu cầu android chỉ định cùng một id người dùng cho nhiều ứng dụng và inturn làm cho chúng chạy trong một quy trình duy nhất và chia sẻ dữ liệu.

Từ android doc android: sharedUserId

android: sharedUserId

Tên của ID người dùng Linux sẽ được chia sẻ với các ứng dụng khác. Theo mặc định, Android chỉ định cho mỗi ứng dụng ID người dùng duy nhất của nó. Tuy nhiên, nếu thuộc tính này được đặt thành cùng một giá trị cho hai hoặc nhiều ứng dụng, tất cả chúng sẽ chia sẻ cùng một ID - miễn là chúng cũng được ký bởi cùng một chứng chỉ. Ứng dụng có cùng ID người dùng có thể truy cập dữ liệu của nhau và nếu muốn, chạy trong cùng một quy trình


1

Cập nhật gần đây

Nếu bạn muốn đăng ký tính năng Ký ứng dụng của google, bạn phải sử dụng khóa khác mới để ký gói ứng dụng hoặc gói của mình, nếu không sau khi tải lên bảng điều khiển google sẽ đưa ra thông báo lỗi cho bạn

Bạn đã tải lên APK hoặc Android App Bundle được ký bằng khóa cũng được sử dụng để ký APK được phân phối cho người dùng. Vì bạn đã đăng ký App Signing của Google Play, bạn nên ký APK hoặc Android App Bundle của mình bằng một khóa mới trước khi tải nó lên


Tôi đã có thể tạo khóa mới bên trong màn hình ký apk của studio android. Tạo kho khóa và bí danh mới và nó có thể hoạt động. Nó đã làm việc cho tôi.
Numan Karaaslan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.