2011-10-07 31 views
34

Điều này có vẻ khá cơ bản nhưng tôi không thể tìm thấy thông tin tôi đang tìm kiếm ở bất kỳ đâu, đặc biệt là đối với các ứng dụng Android.Android APK - trường nào là bắt buộc và điều gì sẽ xảy ra nếu thông tin đó thay đổi?

tôi đang tạo ra chìa khóa phát hành của tôi (self-signed) và tôi đang yêu cầu nhiều thông tin:

  • Trước Họ: (OK; không có khả năng thay đổi)
  • tổ chức đơn vị: (Is "tên doanh nghiệp" của một này?)
  • Tổ chức: (? Làm thế nào là khác nhau này từ "đơn vị" ở trên)
  • Thành phố hoặc Địa phương: (Điều này có thể thay đổi ...)
  • Nhà nước hoặc tỉnh: (Cũng có thể thay đổi ...)
  • Mã quốc gia (XX): (OK; không có khả năng thay đổi)

Với ý nghĩ đó, tôi đã có hai câu hỏi cơ bản về chứng chỉ tự ký sử dụng để phân phối ứng dụng Android:

  1. Vào sáng tạo, tôi có thể để lại bất kỳ trong số này các trường EMPTY, đặc biệt là các trường có khả năng thay đổi? Hay là bị cấm? (Câu hỏi lớn.)
  2. Nếu tôi muốn thay đổi trường đã cho sau? Điều đó có nghĩa là tạo khóa mới và yêu cầu mọi người cài đặt lại ứng dụng để nâng cấp lại, ngay cả khi tôi có khóa gốc? (Có vẻ là trường hợp, xét xử của những gì ít tôi được tìm thấy.)

Cảm ơn trước!


Edit: Thông tin thêm về # 1 ở trên: nếu điều này là bất cứ điều gì giống như SSL certs, sau đó tên, Tổ chức và Country nên là đủ. Nhưng IS là trường hợp? Ưu điểm và nhược điểm của việc để lại bất kỳ/tất cả các trường khác trống? Tôi không thể là người duy nhất tự hỏi về điều này về ứng dụng ... và tài liệu Android mà tôi đã đọc cho đến nay không giúp làm rõ điều này.

Đối với # 2, có vẻ như việc thay đổi chứng chỉ có nghĩa là tạo lại chứng chỉ đó và ký với chứng chỉ mới đó không tránh được sự cố thị trường (nó giống như một ứng dụng hoàn toàn mới, ngay cả khi bạn ký với cả chứng chỉ mới và cũ). Vì vậy, nó là tất cả các quan trọng hơn để có được nó đúng (chưa đủ chung chung trong trường hợp bạn di chuyển) lần đầu tiên bạn đăng ký ứng dụng.

+0

bạn phải kiểm tra điều này. http://developer.android.com/guide/publishing/app-signing.html – Uttam

+3

Tôi đã làm, nhiều lần, trước khi tôi hỏi câu hỏi này. Bạn có thấy một cái gì đó tôi bị mất mà trả lời một trong những câu hỏi này? – MartyMacGyver

Trả lời

25

Nội dung của các trường này thực sự là không liên quan và thường không được nhìn thấy bởi bất kỳ ai khác ngoài bạn. Bạn có thể để trống trường bất cứ nơi nào keytool sẽ cho phép mà không có hậu quả sau này.

Khi bạn đăng ký một apk với kho khóa và tải nó lên Android Market, bạn không thể ký cùng một gói đó với kho khóa khác. Điều này rõ ràng là được thực hiện để ngăn người khác thay thế ứng dụng của bạn bằng ứng dụng khác.

Đối với kho khóa của tôi, tôi đặt thông tin cá nhân của mình vào đó, đặt ngày hết hạn là 999 năm trong tương lai và giữ cho nó an toàn và sao lưu.

+1

Tôi nghĩ rằng nó bao gồm nó. Tôi không chắc liệu có bất kỳ vấn đề pháp lý nào với nó không ... nếu có thì nó sẽ là một cơn ác mộng trong chương trình hiện tại vì bạn không bao giờ có thể cập nhật chứng chỉ, thậm chí bằng cách bắc cầu nó (ký kết với cũ và mới cho một khoảng thời gian cho đến khi chuyển sang hoàn toàn mới). Nếu người ta có thể ký tên với chứng chỉ cũ + một chứng nhận mới, nó chứng minh chuỗi quyền nuôi con. Một tên trộm ngày hôm nay sẽ chỉ cần tiếp tục sử dụng cert cũ). Điều này được đơn giản hóa nhưng dòng dưới cùng là, các bản cập nhật chứng chỉ nên có thể (và thực sự phải ở trong thế giới SSL) nhưng điều đó không được thực hiện trong Market. – MartyMacGyver

7

Để trả lời đúng câu hỏi về trường nào là tùy chọn: thực tế, tất cả các trường là tùy chọn. Yêu cầu duy nhất là bạn cung cấp ít nhất một (ngay cả khi nó chỉ là mã quốc gia).

Dưới đây là Android Studio giải thích: Android Studio displaying an error message

Nó đọc:

Ít nhất một lĩnh vực tổ chức phát hành chứng chỉ được yêu cầu là không có sản phẩm nào đủ

Chắc chắn, với một số thử nghiệm, Tôi xác nhận rằng chỉ có một trường là bắt buộc.

Khi được trả lời bởi Michael, khi ứng dụng của bạn được xuất bản, bạn có thể không bao giờ thay đổi nó.

+0

và thậm chí là không cần thiết ít nhất khi tôi được hướng dẫn sử dụng keytool của Java trực tiếp bằng phản ứng gốc – 1mike12

Các vấn đề liên quan