Ký ứng dụng | Android Developers

Android yêu cầu tất cả các APK đều phải có chữ ký số được chứng thực trước khi được cài đặt hoặc được cập nhật trên thiết bị. Khi phát hành bằng cách sử dụng định dạng Android App Bundle, bạn cần ký gói ứng dụng bằng một khoá tải lên trước khi tải lên Play Console. Sau đó, Tính năng ký ứng dụng của Play sẽ xử lý phần việc còn lại. Đối với cách phân phối ứng dụng bằng APK trên Cửa hàng Play (được tạo trước tháng 8 năm 2021) hoặc trên các cửa hàng khác, bạn phải ký APK thủ công mới có thể tải lên.

Trang này sẽ hướng dẫn bạn một số khái niệm quan trọng liên quan đến việc ký ứng dụng và bảo mật, cách ký ứng dụng của bạn để phát hành lên Google Play bằng Android Studio và cách định cấu hình Tính năng ký ứng dụng của Play.

Sau đây là thông tin tổng quan cấp cao về những bước bạn có thể cần thực hiện để
ký và phát hành ứng dụng mới lên Google Play:

Nếu ứng dụng của bạn đã được phát hành lên Cửa hàng Google Play bằng một
khoá ký ứng dụng hiện có hoặc bạn muốn chọn khoá ký ứng dụng cho
ứng dụng mới thay vì để Google tạo khoá, hãy làm theo các bước sau:

Trang này cũng tìm hiểu cách quản lý khoá của riêng bạn khi tải ứng dụng lên
các cửa hàng ứng dụng khác. Nếu bạn không sử dụng Android Studio hoặc muốn ký
ứng dụng từ dòng lệnh, hãy tìm hiểu cách sử dụng
apksigner.

Lưu ý:

Nếu bạn đang tạo ứng dụng Wear OS thì quy trình ký ứng dụng có thể không giống quy trình mô tả trên trang này. Hãy xem thông tin về cách đóng gói và xuất bản ứng dụng
Wear OS

Tính năng ký ứng dụng của Play

Với Tính năng ký ứng dụng của Play, Google quản lý và bảo vệ khoá ký cho ứng dụng của bạn, đồng thời sử dụng khoá đó để ký các tệp APK cho hoạt động phân phối. Ngoài ra, do các gói ứng dụng cản trở việc tạo và ký các tệp APK cho Cửa hàng Google Play, nên bạn cần thiết lập Tính năng ký ứng dụng của Play trước khi tải gói ứng dụng của mình lên. Cách làm này giúp bạn tận dụng được những tính năng sau:

  • Sử dụng Android App Bundle và hỗ trợ các chế độ phân phối nâng cao của Google Play.
    Android App Bundle giúp giảm dung lượng ứng dụng của bạn để các bản phát hành đơn giản hơn
    và giúp bạn có thể sử dụng các mô-đun tính năng cũng như được trải nghiệm tức thì.
  • Tăng tính bảo mật của khoá ký và cho phép bạn sử dụng khoá tải lên riêng để ký gói ứng dụng mà bạn tải lên Google Play.
  • Tính năng nâng cấp khoá một lần cho các lượt cài đặt mới cho phép bạn thay đổi khoá ký ứng dụng trong trường hợp khoá có sẵn của bạn bị xâm phạm hoặc nếu bạn cần chuyển sang một khoá được mã hoá mạnh hơn.

    Lưu ý:

    Để đảm bảo tính bảo mật, sau khi định cấu hình Tính năng ký ứng dụng của Play bằng khoá được tạo tự động hoặc khoá riêng của mình, bạn không thể truy xuất bản sao khoá ký của ứng dụng và không thể xoá khoá này khỏi máy chủ của Google nếu chưa xoá ứng dụng.

Tính năng ký ứng dụng của Play sử dụng hai khoá: khoá ký ứng dụng và khoá tải lên, được mô tả chi tiết hơn trong phần về Khoá và kho khoá. Bạn giữ khoá tải lên và sử dụng khoá này để ký ứng dụng của mình để tải lên Cửa hàng Google Play. Google sử dụng chứng chỉ tải lên để xác minh danh tính của bạn và ký (các) tệp APK của bạn bằng khoá ký ứng dụng để phân phối như minh hoạ trong hình 1. Khi sử dụng một khoá tải lên riêng biệt, bạn có thể yêu cầu đặt lại khoá tải lên nếu bạn làm mất khoá hoặc khi khoá bị xâm phạm.

So với các ứng dụng được tạo trước tháng 8 năm 2021 và chưa chọn sử dụng Tính năng ký ứng dụng của Play, nếu mất khoá ký ứng dụng, bạn sẽ không cập nhật được ứng dụng của mình.

Lưu ý quan trọng:

Nếu bạn muốn sử dụng cùng một khoá ký trên nhiều cửa hàng, hãy nhớ cung cấp khoá ký của riêng bạn khi bạn định cấu hình Tính năng ký ứng dụng của Play , thay vì để Google tạo khoá ký cho bạn.

Hình 1 Ký ứng dụng bằng Tính năng ký ứng dụng của Play

Khoá của bạn được lưu trữ trên chính cơ sở hạ tầng nơi Google sử dụng để lưu trữ chính các khoá của mình, tại đó các khoá này được Dịch vụ quản lý khoá của Google bảo vệ. Bạn có thể tìm hiểu thêm về cơ sở hạ tầng kỹ thuật của Google bằng cách đọc Báo cáo chính thức về bảo mật Google Cloud.

Khi bạn sử dụng Tính năng ký ứng dụng của Play, nếu khoá tải lên bị mất hoặc bị xâm phạm, bạn có thể liên hệ với Google để thu hồi khoá tải lên cũ và tạo một khoá tải lên mới. Vì khoá ký ứng dụng của bạn được Google bảo mật, bạn có thể tiếp tục tải các phiên bản mới của ứng dụng lên dưới dạng bản cập nhật cho ứng dụng gốc, ngay cả khi thay đổi khoá tải lên. Để tìm hiểu thêm, hãy đọc bài viết Đặt lại khoá tải lên riêng tư bị mất hoặc bị xâm phạm.

Phần tiếp theo mô tả một số thuật ngữ và khái niệm quan trọng liên quan đến việc ký và bảo mật ứng dụng. Nếu bạn muốn bỏ qua và tìm hiểu cách chuẩn bị ứng dụng để tải lên Cửa hàng Google Play, hãy chuyển tới phần Ký ứng dụng
để phát hành.

Kho khoá, khoá và chứng chỉ

Kho khoá Java (.jks hoặc .keystore) là các tệp nhị phân đóng vai trò là kho lưu trữ chứng chỉ và khoá riêng tư.

Chứng chỉ khoá công khai (tập tin .der hoặc .pem), còn gọi là chứng chỉ số hay chứng chỉ danh tính, chứa khoá công khai của cặp khoá công khai/riêng tư, cũng như một số siêu dữ liệu có vai trò nhận dạng chủ sở hữu (chẳng hạn như tên và vị trí) của khoá riêng tư tương ứng.

Sau đây là một số loại khoá mà bạn nên nắm được:

  • Khoá ký ứng dụng: Khoá dùng để ký tệp APK đã cài đặt trên thiết bị của người dùng. Nằm trong mô hình cập nhật bảo mật của Android, khoá ký sẽ không bao giờ thay đổi trong suốt thời gian hoạt động của ứng dụng. Khoá ký ứng dụng là khoá riêng tư và phải được giữ bí mật. Tuy nhiên, bạn có thể chia sẻ chứng chỉ được tạo bằng khoá ký ứng dụng của mình.
  • Khoá tải lên: Khoá mà bạn sử dụng để ký gói ứng dụng hoặc tệp APK trước khi tải gói ứng dụng hoặc tệp APK này lên để ký ứng dụng bằng Google Play. Bạn phải bảo mật khoá tải lên. Tuy nhiên, bạn có thể chia sẻ chứng chỉ được tạo bằng khoá tải lên. Bạn có thể tạo khoá tải lên theo một trong các cách sau:

    • Khi chọn sử dụng tính năng ký ứng dụng, nếu bạn chọn để Google tạo khoá ký ứng dụng cho mình, thì Google sẽ chỉ định khoá mà bạn sử dụng để ký ứng dụng phát hành làm khoá tải lên của bạn.
    • Khi chọn sử dụng tính năng ký ứng dụng cho ứng dụng mới hoặc ứng dụng hiện tại, nếu bạn cung cấp khoá ký ứng dụng cho Google, thì bạn có thể chọn tạo khoá tải lên mới trong hoặc sau khi chọn sử dụng để tăng cường bảo mật.
    • Nếu không tạo khoá tải lên mới, bạn sẽ tiếp tục sử dụng khoá ký ứng dụng làm khoá tải lên để ký từng bản phát hành.

    Mẹo:Để giữ an toàn cho khoá, bạn nên sử dụng khoá ký ứng dụng và khoá tải lên khác nhau.

Làm việc với nhà cung cấp API

Bạn có thể tải chứng chỉ cho khoá ký ứng dụng xuống và khoá tải lên qua trang Phát hành > Thiết lập > Tính toàn vẹn của ứng dụng trong Play Console. Tệp này dùng để đăng ký (các) khoá công khai với các nhà cung cấp API; bạn có thể chia sẻ tệp này vì nó không chứa khoá riêng tư của bạn.

Tệp tham chiếu chứng chỉ – Một tệp mô tả ngắn và duy nhất về chứng chỉ mà các nhà cung cấp API thường yêu cầu kèm theo tên gói nhằm đăng ký một ứng dụng để sử dụng dịch vụ của họ. Bạn có thể tìm thấy tệp tham chiếu MD5, SHA-1 và SHA-256 của chứng chỉ ký ứng dụng và tải lên trang Ký ứng dụng của Play Console. Bạn cũng có thể tính các tệp tham chiếu khác bằng cách tải chứng chỉ gốc (.der) từ chính trang đó.

Ký bản gỡ lỗi

Khi chạy hoặc gỡ lỗi dự án của bạn từ IDE, Android Studio sẽ tự động ký ứng dụng của bạn bằng một chứng chỉ gỡ lỗi do Bộ công cụ SDK Android tạo ra. Lần đầu tiên bạn chạy hoặc gỡ lỗi dự án của mình trong Android Studio, IDE sẽ tự động tạo kho khoá và chứng chỉ gỡ lỗi trong $HOME/.android/debug.keystore, đồng thời thiết lập mật khẩu kho khoá và khoá.

Vì chứng chỉ gỡ lỗi do các công cụ xây dựng tạo ra và không an toàn ngay trong thiết kế nên hầu hết cửa hàng ứng dụng (bao gồm cả Cửa hàng Google Play) không chấp nhận những ứng dụng được ký bằng chứng chỉ gỡ lỗi cho việc phát hành.

Android Studio sẽ tự động lưu trữ thông tin ký gỡ lỗi của bạn trong cấu hình ký tên để bạn không phải nhập lại mỗi lần gỡ lỗi. Cấu hình ký là một đối tượng bao gồm tất cả thông tin cần thiết để ký ứng dụng của bạn, bao gồm cả vị trí kho khoá, mật khẩu kho khoá, tên khoá và mật khẩu khoá.

Để biết thêm thông tin về cách tạo và chạy ứng dụng để gỡ lỗi, hãy xem phần Tạo và chạy ứng dụng của bạn.

Chứng chỉ gỡ lỗi hết hạn

Chứng chỉ tự ký dùng để ký ứng dụng cho mục đích gỡ lỗi sẽ hết hạn sau 30 năm kể từ ngày tạo. Khi chứng chỉ
hết hạn, bạn sẽ gặp lỗi bản dựng.

Để khắc phục vấn đề này, chỉ cần xoá tệp debug.keystore được lưu trữ ở một trong những nơi sau:

  • ~/.android/ trên OS X và Linux
  • C:\Documents and Settings\user\.android\ trên
    Windows XP
  • C:\Users\user\.android\ trên Windows Vista và
    Windows 7, 8 và 10

Trong lần tới khi bạn tạo và chạy một phiên bản gỡ lỗi của ứng dụng, Android Studio sẽ tạo lại một kho khoá và khoá gỡ lỗi mới.

Ký ứng dụng của bạn để phát hành lên Google Play

Khi đã sẵn sàng phát hành ứng dụng, bạn cần ký ứng dụng của mình và tải
ứng dụng lên một cửa hàng ứng dụng, chẳng hạn như Google Play. Trong lần đầu phát hành ứng dụng lên Google Play, bạn cũng phải định cấu hình Tính năng ký ứng dụng của Play. Bạn không bắt buộc phải sử dụng Tính năng ký ứng dụng của Play đối với ứng dụng được tạo trước tháng 8 năm 2021. Phần này cho bạn biết cách ký ứng dụng đúng cách để phát hành và định cấu hình Tính năng ký ứng dụng của Play.

Tạo khoá tải lên và kho khoá

Khoá tải lên rất hữu ích khi định cấu hình Tính năng ký ứng dụng của Play, nếu chưa có khoá này thì bạn có thể tạo một khoá bằng Android Studio như sau:

  1. Trong thanh trình đơn, hãy nhấp vào Tạo > Tạo gói/APK đã ký.
  2. Trong hộp thoại Generate Signed Bundle or APK (Tạo tệp APK hoặc gói đã ký), hãy chọn Android App Bundle hoặc APK rồi nhấp vào Next (Tiếp theo).
  3. Bên dưới trường Đường dẫn cửa hàng chính, hãy nhấp vào Tạo mới.
  4. Trên cửa sổ New Key Store (Cửa hàng khoá mới), hãy cung cấp những thông tin sau cho kho khoá và khoá của bạn, như trong hình 2.

    Hình 2. Tạo khoá tải lên và kho khoá mới trong Android Studio.

  5. Kho khoá

    • Key store path (Đường dẫn cửa hàng chính): Chọn vị trí nơi bạn sẽ tạo kho khoá.
      Ngoài ra, tên tệp phải được thêm vào cuối đường dẫn vị trí bằng
      phần mở rộng .jks.
    • Password (Mật khẩu): Tạo và xác nhận mật khẩu an toàn cho kho khoá của bạn.
  6. Khóa

    • Alias (Bí danh): Nhập tên nhận dạng cho khoá của bạn.
    • Password (Mật khẩu)” Tạo và xác nhận mật khẩu an toàn cho khoá của bạn. Mật khẩu này phải giống với mật khẩu kho khoá của bạn. (Vui lòng tham khảo vấn đề đã biết
      để biết thêm thông tin)
    • Validity (years) (Hiệu lực (năm)): Đặt khoảng thời gian tính bằng năm mà khoá của bạn có hiệu lực. Khoá của bạn phải có hiệu lực trong ít nhất 25 năm, để bạn có thể ký các bản cập nhật ứng dụng bằng chính khoá đó trong suốt thời gian hoạt động của ứng dụng.
    • Chứng chỉ: Nhập một số thông tin về bản thân cho
      chứng chỉ của bạn. Thông tin này không xuất hiện trong ứng dụng nhưng được đưa vào chứng chỉ như một phần của tệp APK.
  7. Sau khi bạn hoàn tất biểu mẫu, hãy nhấp vào OK.

  8. Nếu bạn muốn tạo bản dựng và ký ứng dụng bằng khoá tải lên, hãy tiếp tục xem phần Cách ký ứng dụng bằng khoá tải lên. Nếu bạn chỉ muốn tạo khoá và kho khoá, hãy nhấp vào Cancel (Huỷ).

Ký ứng dụng bằng khoá

Nếu bạn đã có khoá tải lên, hãy dùng khoá đó để ký ứng dụng. Còn nếu ứng dụng đã được ký và phát hành lên Cửa hàng Google Play bằng một khoá ký ứng dụng hiện có, hãy sử dụng khoá đó để ký ứng dụng và đảm bảo việc mã hoá cũng như xuất khoá đó để chọn sử dụng Tính năng ký ứng dụng của Play cho ứng dụng của bạn. Sau đó, bạn có thể tạo một khoá tải lên riêng biệt và đăng ký chứng chỉ công khai của khoá tải lên với Google Play để ký và tải các bản cập nhật tiếp theo lên cho ứng dụng của mình.

Để ký ứng dụng của bạn bằng Android Studio và xuất khoá ký ứng dụng hiện có, hãy làm theo các bước sau:

  1. Nếu bạn hiện chưa mở hộp thoại Generate Signed Bundle or APK (Tạo tệp APK hoặc gói đã ký), hãy nhấp vào Build > Generate Signed Bundle/APK (Tạo > Tạo gói/tệp APK đã ký).
  2. Trong hộp thoại Generate Signed Bundle or APK (Tạo tệp APK hoặc gói đã ký), hãy chọn Android App Bundle hoặc APK rồi nhấp vào Next (Tiếp theo).
  3. Chọn một mô-đun từ trình đơn thả xuống.
  4. Chỉ định đường dẫn đến kho khoá của bạn, bí danh cho khoá của bạn rồi nhập mật khẩu cho cả hai. Nếu bạn chưa chuẩn bị kho khoá và khoá tải lên, trước tiên hãy Tạo khoá tải lên và kho khoá, sau đó quay lại để hoàn thành bước này.

    Hình 3 Ký ứng dụng bằng khoá tải lên.

  5. Nếu bạn đang ký gói ứng dụng bằng khoá ký ứng dụng hiện có và sau đó bạn muốn chọn cho ứng dụng sử dụng Tính năng ký ứng dụng của Play, hãy chọn hộp bên cạnh Export encrypted key (Xuất khoá đã mã hoá) rồi chỉ định một đường dẫn để lưu khoá ký của bạn dưới dạng tệp *.pepk mã hoá. Sau đó, bạn có thể sử dụng khoá ký ứng dụng đã mã hoá để chọn cho một ứng dụng hiện có sử dụng Tính năng ký ứng dụng của Play.

  6. Nhấp vào Tiếp theo.

  7. Trong cửa sổ tiếp theo (minh hoạ trong hình 4), hãy chọn thư mục đích cho ứng dụng đã ký, chọn loại bản dựng, chọn (các) phiên bản sản phẩm (nếu có).

  8. Nếu đang tạo và ký APK, bạn cần chọn Phiên bản
    chữ ký
    mà bạn muốn ứng dụng hỗ trợ. Để tìm hiểu thêm, hãy đọc về các chương trình ký ứng dụng

    Lưu ý:

    Google Play hỗ trợ Cơ chế chữ ký APK v3 cho các APK chưa được phát hành hiện có Ký chứng chỉ nối tiếp

  9. Nhấp vào Finish (Hoàn tất).

    Hình 4. Tạo một phiên bản đã ký của ứng dụng cho các phiên bản sản phẩm đã chọn.

    Lưu ý:

    Nếu dự án của bạn có các phiên bản sản phẩm, thì bạn có thể chọn nhiều phiên bản sản phẩm bằng cách giữ phím Control trên Windows/Linux hoặc phím Command trên Mac OSX. Android Studio sẽ tạo một APK hoặc
    gói ứng dụng riêng cho từng phiên bản sản phẩm mà bạn chọn.

Hình 5. Nhấp vào đường liên kết trong cửa sổ bật lên để phân tích hoặc xác định vị trí gói ứng dụng hoặc xác định vị trí khoá ký đã xuất của bạn.

Sau khi Android Studio hoàn tất quá trình tạo bản dựng ứng dụng đã ký, bạn có thể tìm (locate) hoặc phân tích (analyze) ứng dụng của mình bằng cách nhấp vào tuỳ chọn thích hợp trong thông báo bật lên. Nếu đã chọn xuất khoá ký, bạn có thể nhanh chóng chuyển đến khoá đó bằng cách nhấp vào mũi tên thả xuống ở góc dưới cùng bên phải cửa sổ bật lên để mở rộng rồi nhấp vào Show Exported Key File (Hiện tệp khoá đã xuất), như minh hoạ trong hình 5.

Bây giờ, bạn đã sẵn sàng chọn cho ứng dụng của mình sử dụng Tính năng ký ứng dụng của Play và tải ứng dụng lên để phát hành. Nếu mới sử dụng quy trình phát hành ứng dụng, bạn có thể
đọc bài viết Tổng quan về việc phát hành. Nếu không,
hãy tiếp tục truy cập trang về cách Tải ứng dụng lên Play Console.

Sử dụng tính năng ký ứng dụng của Play

Như mô tả ở trên, bạn cần phải định cấu hình Tính năng ký ứng dụng của Play để ký ứng dụng của mình nhằm phân phối thông qua Google Play (trừ các ứng dụng được tạo trước tháng 8 năm 2021 có thể tiếp tục phân phối tệp APK tự ký).
Các bước bạn cần thực hiện phụ thuộc vào việc liệu ứng dụng của bạn có được phát hành lên Google Play hay chưa; hoặc liệu ứng dụng của bạn đã được ký và phát hành trước tháng 8 năm 2021 bằng cách sử dụng khoá ký ứng dụng hiện có hay không.

Định cấu hình ứng dụng mới

Để định cấu hình ký cho một ứng dụng chưa được phát hành lên Google Play, hãy tiến hành như sau:

  1. Hãy tạo một khoá tải lên rồi ký ứng dụng của bạn bằng khoá tải lên đó (nếu bạn chưa làm việc này).
  2. Đăng nhập Play Console.
  3. Làm theo các bước để chuẩn bị và ra mắt bản phát hành
    để tạo bản phát hành mới.
  4. Sau khi bạn chọn kênh phát hành, hãy định cấu hình ký ứng dụng trong phần Tính toàn vẹn của ứng dụng như sau:
    • Để Google Play tạo một khoá ký ứng dụng cho bạn và dùng khoá đó để ký ứng dụng của bạn, bạn không phải làm gì cả. Khoá bạn dùng để ký bản phát hành đầu tiên sẽ trở thành khoá tải lên của bạn. Bạn sẽ dùng khoá đó để ký các bản phát hành sau này.
    • Để sử dụng cùng một khoá cho ứng dụng khác trên tài khoản nhà phát triển của bạn, hãy chọn Change app signing key > Use my own key > Use the same key as another app in this account (Thay đổi khoá ký ứng dụng > Sử dụng khoá của riêng tôi > Sử dụng cùng một khoá cho ứng dụng khác trong tài khoản này), chọn ứng dụng, sau đó nhấp vào Continue (Tiếp tục).
    • Để cung cấp khoá ký của riêng bạn để Google sử dụng khi ký ứng dụng, hãy chọn Change app signing key > Use my own key (Thay đổi khoá ký ứng dụng > Sử dụng khoá của riêng tôi) rồi chọn một trong những tuỳ chọn cho phép bạn tải tệp khoá riêng tư lên cũng như chứng chỉ công khai của khoá đó.

Lưu ý:Accept (Chấp nhận) để tiếp tục.

Nếu chưa chấp nhận Terms of Service (Điều khoản dịch vụ), thì bạn cần làm vậy để xem xét các điều khoản và chọn(Chấp nhận) để tiếp tục.

Trong phần có tên App Bundles (Gói ứng dụng), hãy nhấp vào Browse files (Duyệt xem tệp) để tìm và tải ứng dụng bạn đã ký lên bằng khoá tải lên. Để biết thêm
thông tin về việc phát hành ứng dụng, hãy tham khảo
chuẩn bị và ra mắt bản phát hành.
Khi bạn phát hành ứng dụng sau khi định cấu hình tính năng ký ứng dụng của Play, Google Play sẽ tạo (trừ phi bạn tải khoá có sẵn lên) và quản lý khoá ký của ứng dụng cho bạn. Bạn chỉ cần ký các bản cập nhật tiếp theo cho ứng dụng của mình bằng cách sử dụng khoá tải lên của ứng dụng trước khi tải lên Google Play.

Nếu bạn cần tạo khoá tải lên mới cho ứng dụng, hãy chuyển đến phần về cách Đặt lại khoá tải lên riêng tư bị mất hoặc bị xâm phạm.

Đăng ký tính năng ký ứng dụng cho một ứng dụng hiện có

Nếu đang cập nhật một ứng dụng đã phát hành lên Google Play bằng khoá ký ứng dụng hiện có, bạn có thể chọn sử dụng Tính năng ký ứng dụng của Play như sau:

  1. Nếu bạn chưa thực hiện, hãy ký ứng dụng của bạn bằng Android Studio với khoá ký ứng dụng hiện có và hãy nhớ đánh dấu vào hộp bên cạnhXuất khoá mã hoá để lưu khoá ký của bạn dưới dạng tệp *.pepk mã hoá . Bạn sẽ cần
    tệp này ở bước sau. Bạn cũng có thể thực hiện việc này bằng công cụ PEPK.
    Bạn có thể tải công cụ này xuống từ Play Console.
  2. Đăng nhập vào Play Console và
    chuyển đến ứng dụng của bạn.
  3. Trên trình đơn bên trái, hãy chọn Release > Setup > App integrity (Phát hành > Thiết lập >Tính toàn vẹn của ứng dụng).
  4. Xem lại Điều khoản dịch vụ và chọn Chấp nhận nếu có.
  5. Chọn một trong những lựa chọn mô tả chính xác nhất về khoá ký mà bạn muốn tải lên Google Play rồi làm theo thông tin hướng dẫn bạn nhìn thấy. Ví dụ: Nếu bạn đã dùng Android Studio để xuất khoá ký cho ứng dụng của mình, như mô tả trên trang này, hãy chọn Upload a key exported from Android Studio (Tải khoá đã xuất từ Android Studio lên) rồi tải tệp *.pepk lên cho khoá của bạn.
  6. Nhấp vào Đăng ký.

Bây giờ, bạn sẽ thấy một trang có thông tin chi tiết về chứng chỉ ký và tải lên
của ứng dụng. Google Play nay ký ứng dụng của bạn bằng khoá sẵn có khi bạn triển khai ứng dụng đó cho người dùng. Tuy nhiên, một trong những lợi ích quan trọng nhất của Tính năng ký ứng dụng của Play là bạn có thể tách riêng khoá mà bạn sử dụng để ký cấu phần phần mềm mà bạn tải lên Google Play khỏi khoá mà Google Play sử dụng để ký ứng dụng của bạn để phân phối cho người dùng. Vì vậy, hãy cân nhắc làm theo các bước trong phần tiếp theo để tạo và đăng ký khoá tải lên riêng biệt.

Tạo và đăng ký chứng chỉ tải lên

Khi bạn phát hành một ứng dụng không được ký bằng khoá tải lên, Google Play Console sẽ cho bạn lựa chọn đăng ký một khoá cho các bản cập nhật sau này của ứng dụng. Tuy bước này là không bắt buộc, nhưng bạn nên phát hành ứng dụng bằng một khoá riêng biệt với khoá mà Google Play dùng để phân phối ứng dụng của bạn cho người dùng. Khi đó, Google sẽ giữ an toàn cho khoá ký của bạn và bạn có thể lựa chọn đặt lại khoá tải lên riêng tư bị mất hoặc bị xâm phạm.
Phần này mô tả cách tạo khoá tải lên, tạo chứng chỉ tải lên từ khoá đó và đăng ký chứng chỉ đó với Google Play cho các bản cập nhật sau này của ứng dụng.

Nội dung sau đây mô tả những tình huống mà bạn sẽ thấy lựa chọn đăng ký chứng chỉ tải lên trong Play Console:

  • Khi bạn phát hành một ứng dụng mới, được ký bằng khoá ký và chọn sử dụng Tính năng ký ứng dụng của Play.
  • Khi bạn chuẩn bị phát hành một ứng dụng hiện có đã chọn sử dụng Tính năng ký ứng dụng của Play, nhưng ứng dụng đó được ký bằng khoá ký riêng của nó.

Nếu bạn chưa phát hành bản cập nhật cho ứng dụng hiện có đã chọn sử dụng Tính năng ký ứng dụng của Play và bạn muốn đăng ký chứng chỉ tải lên, hãy hoàn tất các bước dưới đây và tiếp tục chuyển đến phần về cách đặt lại khoá tải lên riêng tư bị mất hoặc bị xâm phạm.

Tạo một khoá tải lên và kho khoá nếu bạn chưa thực hiện việc này.

Sau khi tạo khoá tải lên và kho khoá, bạn cần tạo chứng chỉ công khai từ khoá tải lên bằng cách sử dụng keytool với lệnh sau:

$ keytool -export -rfc
  -keystore your-upload-keystore.jks
  -alias upload-alias
  -file output_upload_certificate.pem

Hiện bạn đã có chứng chỉ tải lên, hãy đăng ký chứng chỉ đó với Google khi được nhắc trong Play Console hoặc đọc phần dưới đây để đăng ký chứng chỉ thông qua nhóm hỗ trợ Google Play.

Nâng cấp khoá ký ứng dụng

Trong một số trường hợp, có lẽ bạn nên thay đổi khoá ký của ứng dụng. Ví dụ: vì bạn muốn một khoá mã hoá mạnh hơn hoặc khoá ký của bạn đã bị xâm phạm. Tuy nhiên, vì người dùng chỉ có thể cập nhật ứng dụng của bạn nếu bản cập nhật được ký bằng cùng một khoá ký, nên khó có thể thay đổi khoá ký cho một ứng dụng đã phát hành.

Nếu phát hành ứng dụng của mình lên Google Play, bạn có thể nâng cấp khoá ký cho ứng dụng đã xuất bản qua Play Console — khoá mới của bạn được dùng để ký các bản cài đặt mới và bản cập nhật ứng dụng, trong khi khoá ký ứng dụng cũ dùng để ký bản cập nhật cho những người dùng đã cài đặt ứng dụng trước khi bạn nâng cấp khoá.

Để tìm hiểu thêm, hãy đọc bài viết Nâng cấp khoá ký ứng dụng của bạn cho các lượt cài đặt mới.

Đặt lại khoá tải lên riêng tư bị mất hoặc bị xâm phạm

Nếu khoá tải lên riêng tư của bạn bị mất hoặc bị xâm phạm, bạn có thể tạo khoá mới và liên hệ với nhóm hỗ trợ Google Play để đặt lại khoá.

Lưu ý:

Việc đặt lại khoá tải lên sẽ không ảnh hưởng đến khoá ký ứng dụng mà Google Play sử dụng để ký lại các tệp APK trước khi cung cấp cho người dùng

Định cấu hình quy trình xây dựng để tự động ký ứng dụng của bạn

Trong Android Studio, bạn có thể định cấu hình dự án để tự động ký phiên bản phát hành của ứng dụng trong quá trình xây dựng bằng cách tạo một cấu hình ký và chỉ định cấu hình đó cho loại bản phát hành. Cấu hình ký gồm có vị trí kho khoá, mật khẩu kho khoá, bí danh khoá và mật khẩu khoá. Để tạo một cấu hình ký và chỉ định cấu hình đó cho loại bản phát hành
bằng Android Studio, hãy hoàn thành các bước sau:

  1. Trong cửa sổ Dự án, hãy nhấp chuột phải vào ứng dụng của bạn rồi nhấp vào
    Mở phần Cài đặt mô-đun.
  2. Trên cửa sổ Project Structure (Cấu trúc dự án), trong phần Modules (Mô-đun) ở bảng điều khiển bên trái, hãy nhấp vào mô-đun mà bạn muốn ký.
  3. Nhấp vào thẻ , sau đó nhấp vào Thêm
    .
  4. Chọn tệp kho khoá của bạn, nhập tên cho cấu hình ký này (vì bạn có thể tạo nhiều cấu hình) và nhập thông tin bắt buộc.

    Hình 7. Cửa sổ để tạo cấu hình ký mới.

  5. Nhấp vào thẻ Loại bản dựng.
  6. Nhấp vào bản dựng phát hành.
  7. Trong Cấu hình ký, hãy chọn cấu hình ký
    bạn vừa tạo.

    Hình 8. Chọn một cấu hình ký trong Android
    Studio.

  8. Nhấp vào OK.

Giờ đây, mỗi khi bạn tạo loại bản dựng phát hành bằng cách chọn trong phần Build > Build Bundle(s) / APK(s) (Tạo > Tạo gói/tệp APK) trong Android Studio, IDE sẽ tự động ký ứng dụng của bạn bằng cách dùng cấu hình ký mà bạn đã chỉ định. Bạn có thể tìm thấy APK hoặc gói ứng dụng đã ký trong
thư mục build/outputs/ bên trong thư mục dự án cho
mô-đun mà bạn đang dựng.

Khi bạn tạo một cấu hình ký, thông tin ký sẽ được đưa vào dưới dạng văn bản thuần tuý trong các tệp bản dựng Gradle của bạn. Nếu làm việc theo nhóm hoặc chia sẻ mã công khai, bạn nên giữ an toàn cho thông tin ký của mình bằng cách xoá thông tin đó khỏi các tệp bản dựng và lưu trữ riêng thông tin đó. Bạn có thể đọc thêm về cách xoá thông tin ký khỏi tệp bản dựng trong phần Xoá thông tin ký khỏi tệp bản dựng của bạn. Để biết thêm về cách bảo mật thông tin ký, hãy đọc phần Bảo mật khoá của bạn.

Ký từng phiên bản sản phẩm theo cách riêng

Nếu ứng dụng của bạn có nhiều phiên bản sản phẩm và bạn muốn ký từng phiên bản theo cách riêng, bạn có thể tạo cấu hình ký bổ sung và chỉ định các cấu hình đó theo phiên bản:

  1. Trong cửa sổ Dự án, hãy nhấp chuột phải vào ứng dụng của bạn rồi nhấp vào
    Mở phần Cài đặt mô-đun.
  2. Trên cửa sổ Project Structure (Cấu trúc dự án), trong phần Modules (Mô-đun) ở bảng điều khiển bên trái, hãy nhấp vào mô-đun mà bạn muốn ký.
  3. Nhấp vào thẻ , sau đó nhấp vào Thêm
    .
  4. Chọn tệp kho khoá của bạn, nhập tên cho cấu hình ký này (vì bạn có thể tạo nhiều cấu hình) và nhập thông tin bắt buộc.

    Hình 10. Cửa sổ để tạo cấu hình ký mới.

  5. Lặp lại các bước 3 và 4 nếu cần cho đến khi bạn tạo xong tất cả các cấu hình
    ký.
  6. Nhấp vào thẻ Phiên bản.
  7. Nhấp vào phiên bản mà bạn muốn định cấu hình, sau đó chọn cấu hình ký phù hợp trên trình đơn thả xuống Signing Config (Cấu hình ký).

    Hình 11 Định cấu hình các chế độ ký theo phiên bản sản phẩm.

    Lặp lại để định cấu hình bất kỳ phiên bản sản phẩm bổ sung nào.

  8. Nhấp vào OK.

Bạn cũng có thể chỉ định chế độ ký trong tệp cấu hình Gradle. Để biết thêm thông tin, hãy xem phần Định cấu hình chế độ cài đặt ký.

Quản lý khoá ký của riêng bạn

Nếu chọn không sử dụng Tính năng ký ứng dụng của Play (chỉ dành cho ứng dụng được tạo trước tháng 8 năm 2021), thì bạn có thể quản lý kho khoá và khoá ký ứng dụng của riêng mình.
Xin lưu ý rằng bạn có trách nhiệm bảo mật khoá và kho khoá.
Ngoài ra, ứng dụng của bạn sẽ không thể hỗ trợ Android App Bundle,
Play Feature Delivery và Play Asset Delivery.

Khi bạn đã sẵn sàng tạo khoá và kho khoá của riêng mình, hãy đảm bảo rằng bạn chọn một mật khẩu mạnh cho kho khoá của bạn và một mật khẩu mạnh riêng cho từng khoá riêng tư được lưu trữ trong kho khoá. Bạn phải giữ kho khoá của mình ở một nơi an toàn và bảo mật. Nếu bạn mất quyền truy cập vào khoá ký ứng dụng hoặc khoá của bạn bị từ chối, Google sẽ không thể truy xuất khoá ký ứng dụng của bạn, và bạn sẽ không thể phát hành phiên bản mới của ứng dụng dưới dạng bản cập nhật cho ứng dụng gốc. Để biết thêm thông tin, hãy xem phần Bảo mật khoá của bạn dưới đây.

Nếu quản lý kho khoá và khoá ký ứng dụng của riêng bạn, thì khi ký tệp APK, bạn sẽ ký tệp APK bằng khoá ký ứng dụng cục bộ và trực tiếp tải tệp APK đã ký lên Cửa hàng Google Play để phân phối như minh hoạ trong hình 10.

Hình 12 Ký ứng dụng khi bạn quản lý khoá ký ứng dụng của riêng mình

Khi bạn sử dụng Tính năng ký ứng dụng của Play, Google sẽ bảo vệ khoá ký của bạn và đảm bảo rằng các ứng dụng của bạn được ký chính xác và có thể nhận bản cập nhật trong suốt thời gian hoạt động.
Tuy nhiên, nếu quyết định tự quản lý khoá ký ứng dụng, bạn nên lưu ý một số điều sau.

Lưu ý khi ký

Bạn nên ký ứng dụng bằng chính chứng chỉ đó trong suốt thời gian hoạt động
dự kiến. Có một số lý do để bạn nên làm như vậy:

  • Nâng cấp ứng dụng: Khi hệ thống đang cài đặt một bản cập nhật cho ứng dụng, hệ thống
    sẽ so sánh (các) chứng chỉ trong phiên bản mới với các chứng chỉ trong phiên bản
    hiện có. Hệ thống cho phép cập nhật nếu các chứng chỉ trùng khớp. Nếu ký phiên bản mới bằng một chứng chỉ khác, bạn phải chỉ định một tên gói khác cho ứng dụng — trong trường hợp này, người dùng cài đặt phiên bản mới dưới dạng một ứng dụng hoàn toàn mới.
  • Mô-đun ứng dụng: Android cho phép các APK do cùng một chứng chỉ ký
    chạy trong cùng một quy trình, nếu các ứng dụng yêu cầu, để hệ thống coi các ứng dụng đó như một
    ứng dụng duy nhất. Bằng cách này, bạn có thể triển khai ứng dụng của mình trong các mô-đun và người dùng có thể tự cập nhật
    từng mô-đun.
  • Chia sẻ mã/dữ liệu thông qua các quyền: Android cung cấp tính năng thực thi quyền dựa trên chữ ký để một ứng dụng có thể cung cấp chức năng cho một ứng dụng khác được ký bằng một chứng chỉ đã chỉ định. Bằng cách ký nhiều tệp APK với cùng một chứng chỉ và sử dụng các chế độ kiểm tra quyền dựa trên chữ ký, các ứng dụng của bạn có thể chia sẻ mã và dữ liệu một cách an toàn.

Nếu bạn dự định hỗ trợ nâng cấp cho một ứng dụng, hãy đảm bảo rằng khoá ký ứng dụng của bạn có thời hạn hiệu lực dài hơn thời gian tồn tại dự kiến của ứng dụng đó. Bạn nên sử dụng thời gian hiệu lực từ 25 năm trở lên. Khi thời gian có hiệu lực của khoá của bạn hết hạn, người dùng sẽ không thể nâng cấp lên các phiên bản ứng dụng mới một cách liền mạch được nữa.

Nếu bạn dự định phát hành ứng dụng trên Google Play, thì khoá bạn dùng để ký ứng dụng phải có thời hạn có hiệu lực kết thúc sau ngày 22 tháng 10 năm 2033. Google Play
thực thi yêu cầu này để đảm bảo rằng người dùng có thể nâng cấp liền mạch các ứng dụng khi
có các phiên bản mới.

Bảo mật khoá của bạn

Nếu bạn chọn tự quản lý và bảo mật khoá ký ứng dụng và kho khoá (thay vì chọn sử dụng Tính năng ký ứng dụng của Play), thì việc bảo mật khoá ký ứng dụng là một yếu tố quan trọng đối với cả bạn và người dùng. Nếu bạn cho phép người khác sử dụng khoá, hoặc nếu bạn để kho khoá và mật khẩu của mình ở một vị trí không an toàn và do đó bên thứ ba có thể tìm và sử dụng kho khoá và mật khẩu đó, có thể họ sẽ xâm phạm danh tính tác giả của bạn và làm giảm sự tin tưởng nơi người dùng.

Lưu ý:

Nếu bạn sử dụng Tính năng ký ứng dụng của Play, khoá ký ứng dụng của bạn sẽ được bảo mật bằng cơ sở hạ tầng của Google. Bạn vẫn nên bảo mật khoá tải lên như mô tả dưới đây. Nếu khoá tải lên bị lộ, bạn có thể liên hệ với Google để thu hồi khoá đó và nhận khoá tải lên mới.

Nếu một bên thứ ba có thể tìm cách lấy được khoá ký ứng dụng của bạn mà bạn không biết hoặc không cho phép, thì họ có thể ký và phân phối các ứng dụng độc hại thay thế các ứng dụng thực sự của bạn hoặc làm hỏng các ứng dụng của bạn. Những kẻ như vậy cũng có thể ký và phân phối ứng dụng theo danh tính của bạn để tấn công các ứng dụng khác hoặc chính hệ thống, hay có thể làm hỏng hoặc đánh cắp dữ liệu người dùng.

Bạn cần có khoá riêng tư để ký tất cả các phiên bản ứng dụng sau này. Nếu làm mất hoặc để thất lạc khoá, bạn sẽ không thể phát hành bản cập nhật cho ứng dụng hiện có của mình. Bạn cũng không thể tạo lại khoá từng tạo trước đây.

Danh tiếng của bạn với tư cách là một nhà phát triển phụ thuộc vào việc bảo mật khoá ký ứng dụng của bạn đúng cách mọi lúc, cho đến khi khoá hết hạn. Dưới đây là một số mẹo giúp
bảo mật khoá của bạn:

  • Chọn mật khẩu mạnh cho kho khoá và khoá.
  • Không cung cấp hoặc cho bất kỳ ai mượn khoá riêng tư của bạn và đừng để những người không có phận sự biết mật khẩu kho khoá và khoá của bạn.
  • Lưu giữ tệp kho khoá có chứa khoá riêng tư của bạn ở một nơi an toàn và bảo mật.

Nhìn chung, nếu bạn làm theo các biện pháp phòng ngừa thông thường khi tạo, sử dụng và lưu trữ khoá, thì khoá sẽ vẫn an toàn.

Xoá thông tin ký khỏi tệp bản dựng của bạn

Khi bạn tạo cấu hình ký, Android Studio sẽ thêm thông tin ký của bạn ở dạng văn bản thuần tuý vào tệp build.gradle của mô-đun. Nếu làm việc theo nhóm hoặc tìm nguồn mở cho đoạn mã của mình, bạn nên di chuyển thông tin nhạy cảm này ra khỏi các tệp bản dựng để người khác không thể dễ dàng truy cập được. Để thực hiện việc này, bạn nên tạo một tệp thuộc tính riêng để lưu trữ thông tin bảo mật và tham chiếu đến tệp đó trong các tệp bản dựng như sau:

  1. Tạo cấu hình ký và chỉ định cấu hình đó cho một hoặc nhiều loại bản dựng.
    Những hướng dẫn này giả định rằng bạn đã định cấu hình một cấu hình ký ứng dụng cho loại bản dựng phát hành, như mô tả trong phần Định cấu hình quy trình tạo bản dựng để tự động ký ứng dụng ở trên.
  2. Tạo một tệp có tên là keystore.properties trong thư mục gốc
    của dự án. Tệp này phải chứa thông tin ký của bạn,
    như sau:

    storePassword=myStorePassword
    keyPassword=mykeyPassword
    keyAlias=myKeyAlias
    storeFile=myStoreFileLocation
    
  3. Trong tệp build.gradle của mô-đun, hãy thêm mã để tải
    tệp keystore.properties trước khối android {}.

    Groovy

    ...
    
    // Create a variable called keystorePropertiesFile, and initialize it to your
    // keystore.properties file, in the rootProject folder.
    def keystorePropertiesFile = rootProject.file("keystore.properties")
    
    // Initialize a new Properties() object called keystoreProperties.
    def keystoreProperties = new Properties()
    
    // Load your keystore.properties file into the keystoreProperties object.
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
    
    android {
        ...
    }
    

    Kotlin

    ...
    import java.util.Properties
    import java.io.FileInputStream
    
    // Create a variable called keystorePropertiesFile, and initialize it to your
    // keystore.properties file, in the rootProject folder.
    val keystorePropertiesFile = rootProject.file("keystore.properties")
    
    // Initialize a new Properties() object called keystoreProperties.
    val keystoreProperties = Properties()
    
    // Load your keystore.properties file into the keystoreProperties object.
    keystoreProperties.load(FileInputStream(keystorePropertiesFile))
    
    android {
        ...
    }
    

    Lưu ý: Bạn có thể chọn lưu trữ tệp keystore.properties của mình ở một vị trí khác (ví dụ: trong thư mục mô-đun thay vì trong thư mục gốc của dự án, hoặc trên máy chủ bản dựng của bạn nếu bạn đang sử dụng công cụ tích hợp liên tục). Trong trường hợp đó, bạn nên sửa đổi mã ở trên để khởi chạy chính xác keystorePropertiesFile bằng cách sử dụng vị trí của tệp keystore.properties thực tế.

  4. Bạn có thể tham chiếu đến các thuộc tính được lưu trữ trong keystoreProperties
    bằng cú pháp keystoreProperties['propertyName'].
    Sửa đổi khối signingConfigs của tệp
    build.gradle của mô-đun để tham chiếu thông tin ký của bản ghi được lưu trữ trong
    keystoreProperties bằng cú pháp này.

    Groovy

    android {
        signingConfigs {
            config {
                keyAlias keystoreProperties['keyAlias']
                keyPassword keystoreProperties['keyPassword']
                storeFile file(keystoreProperties['storeFile'])
                storePassword keystoreProperties['storePassword']
            }
        }
        ...
      }

    Kotlin

    android {
        signingConfigs {
            create("config") {
                keyAlias = keystoreProperties["keyAlias"] as String
                keyPassword = keystoreProperties["keyPassword"] as String
                storeFile = file(keystoreProperties["storeFile"] as String)
                storePassword = keystoreProperties["storePassword"] as String
            }
        }
        ...
      }
  5. Mở cửa sổ công cụ Tạo biến thể và đảm bảo rằng
    bạn đã chọn loại bản dựng phát hành.
  6. Chọn một tuỳ chọn trong phần Build > Build Bundle(s) / APK(s) (Tạo > Tạo (các) gói/tệp APK) để tạo tệp APK hoặc gói ứng dụng cho bản phát hành.
    Bạn sẽ thấy dữ liệu đầu ra của bản dựng trong thư mục
    build/outputs/ cho mô-đun của mình.

Vì các tệp bản dựng của bạn không còn chứa thông tin nhạy cảm nên giờ đây, bạn có thể đưa các tệp này vào bộ điều khiển nguồn hoặc tải những tệp đó lên một cơ sở mã dùng chung. Hãy nhớ
để đảm bảo an toàn cho tệp keystore.properties. Trong đó có thể bao gồm cả việc xoá dữ liệu đó khỏi hệ thống kiểm soát nguồn của bạn.