Khái niệm Android (dành cho Nhà phát triển web)

Peter Conn
Peter Conn
Joyce Toh
Joyce Toh

Nếu bạn là nhà phát triển web mới sử dụng Android và Google Play, dưới đây là một số thông tin chi tiết bạn nên cần lưu ý. Hiện đã có nhiều tài nguyên và tài liệu cho vấn đề này (nhờ vào Android Ở đây, chúng ta sẽ làm nổi bật một số khái niệm quan trọng và mối liên hệ của chúng với Bubblewrap.

Khoá tải lên so với khoá ký

Nếu bạn định dùng Bubblewrap để tạo tệp Android App Bundle (AAB) (Lưu ý: Kể từ tháng 8 Kể từ năm 2021, Google Play sẽ yêu cầu tất cả các ứng dụng mới phải dùng định dạng Android App Bundle) hoặc APK để tải lên và phát hành lên Google Play, bạn sẽ cần ký ứng dụng của mình bằng khoá ký. Điều khoản Play cung cấp cho bạn 2 cách xử lý vấn đề này:

  • Tính năng ký ứng dụng của Play (nên dùng): Google sẽ quản lý và bảo vệ khoá ký cho ứng dụng của bạn cho bạn. Công cụ này dùng chính sách này để ký tệp APK cho việc phân phối. Tính năng ký ứng dụng của Play sử dụng hai khoá. Cụm từ "ứng dụng khoá ký" mà Google sẽ quản lý cho bạn và "khoá tải lên" là loại thông tin bạn giữ lại và nên sử dụng riêng tư đối với bạn. Bạn sử dụng khoá tải lên này để ký ứng dụng của mình để tải lên Play Console. Chiến dịch này hệ thống giúp bạn có thể đặt lại khoá tải lên nếu khoá bị mất hoặc bị xâm phạm, bằng cách liên hệ với nhóm hỗ trợ Play. Hiện tại, Google Play cho phép bạn tải ứng dụng lên dưới dạng tệp AAB hoặc APK:
    • Android App Bundle (AAB): Thời điểm bạn tải một tệp AAB lên Play Console, thì bạn hoãn việc tạo và tạo tệp APK cho Cửa hàng Google Play. Khi người dùng tải xuống và cài đặt ứng dụng của bạn, Google Play sẽ phân phối ứng dụng đó cho họ dưới dạng APK đã ký. Do đó, việc ký APK cũng cần được thực hiện bằng Google Play. Vì vậy, theo mặc định, nếu bạn tải ứng dụng lên Play Console dưới dạng tệp AAB, yêu cầu bạn sử dụng Tính năng ký ứng dụng của Play.
    • APK: Với APK, bạn có thể chọn sử dụng Tính năng ký ứng dụng của Play. Chọn sử dụng ứng dụng Play Bạn nên ký vì tính năng này làm tăng tính bảo mật của khoá ký. Như đã lưu ý trước đây, Google Play sẽ sớm yêu cầu tải tất cả ứng dụng mới lên ở định dạng AAB, vì vậy chúng tôi bạn nên làm việc đó thay vì tải APK lên.
  • Quản lý khoá ký của riêng bạn: Nếu bạn chọn quản lý khoá của riêng mình và không chọn sử dụng ứng dụng Play Khi ký, bạn hoàn toàn chịu trách nhiệm về khoá ký cho ứng dụng của mình. Không giống như Tính năng ký ứng dụng của Play, bạn sẽ không thể đặt lại nếu bị mất khoá. Do đó, việc mất khoá ký của ứng dụng có nghĩa là bạn cũng không thể cập nhật ứng dụng của bạn nữa.

Trong quá trình thiết lập bubblewrap init, khi chuyển đến phần "Thông tin về khoá ký (5/5)", bạn sẽ được nhắc nhập "Vị trí cửa hàng chính""Tên khoá" hoặc sử dụng giá trị mặc định. Chiến lược phát hành đĩa đơn vị trí kho khoá mặc định là tệp android.keystore trong thư mục dự án của bạn và mặc định tên khoá là android. Nếu Bubblewrap không tìm thấy kho khoá hiện có có tên khoá đó tại vị trí của bạn, công cụ này sẽ tạo một mật khẩu cho bạn cũng như nhắc bạn cung cấp mật khẩu. Ghi lại mật khẩu mà bạn đã nhập vì cần thiết trong quá trình xây dựng (bubblewrap build), trong đó ứng dụng sẽ sử dụng để ký ứng dụng của bạn. Nếu bạn chọn sử dụng Tính năng ký ứng dụng của Play, thì khoá ký đó sẽ được Bubblewrap được tạo và dùng để ký ứng dụng của bạn sẽ trở thành "khoá tải lên". Cho dù bạn chọn sử dụng Khoá do Bubblewrap tạo làm khoá ký hoặc khoá tải lên, bạn nên bảo vệ và giữ khoá này ở chế độ riêng tư. Bạn không nên áp dụng để quản lý phiên bản. Thay vào đó, hãy giới hạn số lượng người dùng quyền truy cập vào nội dung đó.

Bạn cần phải sử dụng Digital Asset Links (Đường liên kết đến tài sản kỹ thuật số) để khai báo mối quan hệ giữa trang web và Android của bạn . Để đảm bảo rằng ứng dụng Android do Bubblewrap tạo ra được xác minh đúng cách và khởi chạy dưới dạng một Hoạt động đáng tin cậy trên web (thay vì Thẻ tuỳ chỉnh của Chrome), bạn cần thêm khoá thích hợp vào tệp assetlinks.json. Sau đó, tải tệp đó lên trang web tại .well-known/assetlinks.json (so với thư mục gốc). Tệp assetlinks.json của bạn phải theo định dạng sau:

[{
 "relation": ["delegate_permission/common.handle_all_urls"],
 "target": {
   "namespace": "android_app",
   "package_name": "com.your.package_name",
   "sha256_cert_fingerprints": [
     "XX:XX:XX:..."
   ]
 }
}]

Lấy vân tay số cho chứng chỉ SHA256

Để tạo tệp assetlinks.json, bạn cần liên kết dấu vân tay chứng chỉ SHA 256 bằng khoá ký của ứng dụng. Điều quan trọng cần lưu ý là vân tay số, khoá ký và tải lên của bạn sẽ khác. Bạn cần phải duy trì hãy lưu ý sự khác biệt này, đặc biệt nếu bạn thấy ứng dụng của mình khởi chạy dưới dạng một Thẻ tuỳ chỉnh của Chrome (với thanh trình duyệt hiển thị). Khi đó, có thể tệp assetlinks.json của bạn sẽ không có vân tay tương ứng với phím tương ứng.

Bạn nên thêm cả vân tay số của chứng chỉ ký và tải lên trong assetlinks.json để dễ dàng gỡ lỗi ứng dụng cục bộ hơn. Hãy xem phần Thêm khoá khác bên dưới để tìm hiểu thêm thông tin về cách có cả hai khoá trong tệp assetlinks.json.

Có một số cách để lấy vân tay. Bạn có thể xem thông tin chi tiết ở các phần tiếp theo. Tất cả các vân tay đều phải cung cấp cho bạn cùng một vân tay, vì vậy hãy thoải mái chọn phương thức phù hợp nhất thuận tiện.

Qua Play Console

Tuỳ thuộc vào việc bạn có chọn sử dụng Tính năng ký ứng dụng của Play hay không, bạn có thể có một hoặc hai khoá. Để truy xuất vân tay số SHA256 thích hợp cho từng khoá:

  1. Truy cập Play Console
  2. Chọn ứng dụng mà bạn quan tâm
  3. Trong trình đơn điều hướng ở bên trái, ở phần Bản phát hành, hãy chuyển đến phần Thiết lập -> Tính toàn vẹn của ứng dụng.
  4. Sao chép SHA256 cho khoá thích hợp:

Truy xuất dấu vân tay chứng chỉ SHA256 thích hợp cho khoá ký hoặc khoá tải lên của bạn

  • Khoá ký: Sao chép vân tay số SHA256 cho "Chứng chỉ khoá ký ứng dụng". Chiến dịch này vân tay số sẽ tương ứng với ứng dụng của bạn nếu bạn tải xuống ứng dụng từ Cửa hàng Google Play vì Google Play phân phối ứng dụng được ký bằng khoá ký.

  • Khoá tải lên: Sao chép vân tay số SHA256 cho "Chứng chỉ khoá tải lên". Chiến dịch này vân tay sẽ tương ứng với ứng dụng của bạn nếu bạn cài đặt ứng dụng trên máy (qua ADB qua USB cho ví dụ). Tệp APK đó (trên máy cục bộ của bạn) do Bubblewrap xây dựng và do đó được ký bởi khoá mà công cụ này cũng tạo cho bạn (trong quá trình thiết lập init). Hãy nhớ rằng đây có thể là khoá ký cho ứng dụng được cài đặt cục bộ, nhưng khoá này thực sự trở thành "khoá tải lên" một lần bạn xuất bản ứng dụng qua Play.

Qua keytool

keytool là một chìa khoá và công cụ quản lý chứng chỉ. Bạn có thể sử dụng keytool để trích xuất vân tay số SHA 256 liên kết với APK hoặc AAB Bubblewrap đã tạo. Xin lưu ý rằng vân tay số này là dành cho khoá ký cục bộ và nếu bạn tải ứng dụng lên Play và chọn sử dụng Tính năng ký ứng dụng của Play thì khoá này sẽ trở thành "khoá tải lên".

keytool -printcert -jarfile [path to APK or AAB] | grep SHA256

Một cách khác để lấy đúng tệp Digital Asset Links (Đường liên kết đến tài sản kỹ thuật số) cho ứng dụng là sử dụng Công cụ liên kết tài sản:

  1. Cài đặt Công cụ liên kết tài sản trong Cửa hàng Play.
  2. Trên cùng một thiết bị, hãy tải ứng dụng của bạn xuống từ Cửa hàng Google Play hoặc cài đặt trên thiết bị.
  3. Mở ứng dụng Asset Link Tool và bạn sẽ thấy danh sách tất cả ứng dụng đã cài đặt trên thiết bị theo tên gói. Lọc danh sách theo ID ứng dụng mà bạn đã chọn trước đó trong khoảng thời gian bubblewrap init rồi nhấp vào mục đó.
  4. Bạn sẽ thấy một trang liệt kê chữ ký của ứng dụng và một Đường liên kết đến tài sản kỹ thuật số đã được tạo. Nhấp vào Các nút Sao chép hoặc Chia sẻ ở dưới cùng để xuất dữ liệu theo cách bạn muốn (ví dụ: lưu vào Google Keep, gửi qua email cho chính mình).

Ý tưởng tương tự cũng áp dụng như trước đây với khoá ký hoặc khoá tải lên. Nếu bạn đã cài đặt ứng dụng của mình từ Cửa hàng Google Play, Công cụ liên kết tài sản sẽ giúp bạn tạo vân tay số cho khoá ký ứng dụng. Nếu bạn đã cài đặt ứng dụng trực tiếp từ máy cục bộ, thì vân tay số là dành cho khoá Đã tạo bong bóng.

Bây giờ, bạn đã tải tài sản lên, hãy đảm bảo bạn có thể truy cập vào tệp đường liên kết của tài sản trong trình duyệt. Kiểm tra để đảm bảo rằng https://example.com/.well-known/assetlinks.json phân giải thành tệp bạn vừa tải lên.

Các trang web có trụ sở tại Jekyll

Nếu trang web của bạn do Jekyll (chẳng hạn như GitHub Pages) tạo, bạn sẽ cần thêm một dòng để đưa thư mục .well-known vào dữ liệu đầu ra. Trung tâm trợ giúp GitHub có thêm thông tin về chủ đề này. Tạo một tệp có tên là _config.yml ở thư mục gốc của trang web (hoặc thêm vào tệp nếu đã tồn tại) và nhập:

# Folders with dotfiles are ignored by default.
include: [.well-known]

Thêm các khoá khác

Mỗi tệp Digital Asset Links (Đường liên kết đến tài sản kỹ thuật số) có thể chứa nhiều ứng dụng và đối với mỗi ứng dụng, tệp đó có thể chứa nhiều hơn một phím. Ví dụ: để thêm khoá thứ hai, chỉ cần sử dụng Công cụ liên kết tài sản để xác định khoá và thêm khoá đó làm mục nhập thứ hai. Mã trong Chrome phân tích cú pháp JSON này khá nghiêm ngặt, do đó hãy đảm bảo rằng bạn không vô tình thêm thừa dấu phẩy ở cuối danh sách.

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.your.package_name",
    "sha256_cert_fingerprints": [
      "XX:XX:XX:..."
    ]
  }
},{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.your.package_name",
    "sha256_cert_fingerprints": [
      "XX:XX:XX:..."
    ]
  }
}]

Khắc phục sự cố

Chrome ghi lại lý do không xác minh được bằng Đường liên kết đến tài sản kỹ thuật số và bạn có thể xem nhật ký trên Thiết bị Android có adb logcat. Nếu đang phát triển trên Linux/Mac, bạn có thể xem nhật ký liên quan từ một thiết bị được kết nối bằng:

> adb logcat -v brief | grep -e OriginVerifier -e digital_asset_links

Ví dụ: nếu bạn thấy thông báo Statement failure matching fingerprint., bạn nên sử dụng Công cụ Asset Link (Đường liên kết đến tài sản) để xem chữ ký của ứng dụng và đảm bảo chữ ký đó khớp với chữ ký trong assetlinks.json của bạn .