Xây dựng và sử dụng SDK hỗ trợ thời gian chạy

1
Key concepts
2
Set up your development environment
3
Build an RE SDK
4
Consume the RE SDK
5
Testing, and building for distribution

Khái niệm chính

Phần này giải thích cấu trúc Thời gian chạy SDK, cách cài đặt các SDK hỗ trợ thời gian chạy, khả năng tương thích ngược và cách di chuyển các SDK hiện có sang Thời gian chạy SDK.

Bảng thuật ngữ

  • SDK hỗ trợ thời gian chạy (RE SDK): Một SDK được tạo để chạy trong môi trường Thời gian chạy SDK và giao tiếp với ứng dụng qua giao tiếp giữa các quy trình (IPC).
  • SDK nhận biết thời gian chạy (RA SDK): Một SDK không hỗ trợ thời gian chạy, được liên kết với ứng dụng một cách tĩnh, có thể chứa mã SDK hiện có cũng như mã mới để gọi vào SDK hỗ trợ thời gian chạy.
    • Đôi khi, điều này cũng được gọi là được liên kết tĩnh hoặc SDK tĩnh.
  • Shim: Một thư viện Jetpack giúp trừu tượng hoá hoạt động giao tiếp giữa các quy trình hoặc giao tiếp giữa các quy trình (IPC) và duy trì cùng một giao diện ứng dụng-SDK.

Cấu trúc Thời gian chạy SDK

Thời gian chạy SDK sử dụng một loại mô hình máy khách – máy chủ.

Điểm khác biệt chính là "máy khách" (ứng dụng) và "máy chủ" (SDK có thể chạy) chạy trên cùng một thiết bị và hoạt động giao tiếp này diễn ra trên các quy trình.

Để giải quyết những thách thức này, chúng tôi đã tạo các thư viện và công cụ Jetpack sau đây để đơn giản hoá việc tích hợp SDK ứng dụng trong Thời gian chạy SDK:

  • Thư viện shim: Thư viện trình bao bọc (hoặc shim) giúp trừu tượng hoá giao tiếp giữa các quy trình hoặc giao tiếp giữa các quy trình (IPC). Điều này cũng giúp duy trì cùng một giao diện SDK ứng dụng.
  • Thư viện Backcompat: Thư viện này xử lý khả năng tương thích ngược, đảm bảo SDK của bạn tương thích bất kể Thời gian chạy SDK có hoạt động hay không.
  • Thư viện giao diện người dùng: Chúng tôi cũng cung cấp các thư viện để xử lý việc trình bày từ xa, chẳng hạn như tìm nạp giao diện người dùng từ SDK có hỗ trợ thời gian chạy hoặc thay đổi kích thước và bố cục lại của khung hiển thị.
Tổng quan về kiến trúc Thời gian chạy SDK
Sơ đồ cho thấy một ứng dụng tương tác với SDK có hỗ trợ thời gian chạy thông qua nhiều thư viện.

Thay đổi đối với quy trình cài đặt

Khi tạo SDK hỗ trợ thời gian chạy trong Android Studio hoặc các công cụ khác, bạn sẽ tạo một Gói SDK Android (ASB), đây là một định dạng xuất bản dành cho các SDK hỗ trợ thời gian chạy.

bundletool xử lý ASB để tạo ra một APK cho SDK hỗ trợ thời gian chạy của bạn: APK riêng biệt này chứa mã SDK nhưng không chứa mã ứng dụng.

Tệp kê khai của ứng dụng khai báo một phần phụ thuộc vào tên và phiên bản SDK được kích hoạt bởi thời gian chạy của bạn, đồng thời phần phụ thuộc này được ứng dụng trình cài đặt phân giải.

Sau khi trình cài đặt tìm được APK SDK, quá trình cài đặt sẽ bắt đầu bằng quá trình cài đặt APK SDK. Sau khi thành công, hệ thống sẽ cài đặt APK của ứng dụng.

Quy trình này sẽ khác nếu ứng dụng được cài đặt trên Android 13 trở xuống và trên những thiết bị không hỗ trợ Thời gian chạy SDK. Trong trường hợp này, cửa hàng sẽ cài đặt một APK duy nhất chứa cả SDK có thể chạy và mã ứng dụng của bạn. Hãy đọc phần phân phối để tìm hiểu thêm.

Bất cứ khi nào một ứng dụng phụ thuộc vào SDK này trong quá trình phát hành công khai, cửa hàng ứng dụng sẽ tạo APK SDK chính xác từ ASB này và cài đặt APK đó.

Khả năng tương thích ngược

Vì Thời gian chạy SDK đã được giới thiệu trong Android 14, nên chúng tôi cần hỗ trợ các phiên bản trước đó mà không gây ra gánh nặng cho nhà phát triển SDK hoặc Ứng dụng.

Để xử lý khả năng tương thích ngược trên Android 13 trở xuống, chúng tôi đã ra mắt một thư viện Jetpack có thể chạy liền mạch SDK có tính năng thời gian chạy, bất kể thiết bị có hỗ trợ Thời gian chạy SDK hay không.

Khi làm theo hướng dẫn này, SDK kích hoạt bởi thời gian chạy của bạn sẽ tương thích ngược theo mặc định và bạn không cần thực hiện thêm bước nào.

Chúng tôi nêu bật những hành động liên quan đến khả năng tương thích ngược ở các giai đoạn liên quan. Tuy nhiên, nói chung, bạn nên đảm bảo rằng bạn đã khai báo đúng các phần phụ thuộc và đang sử dụng các lớp *Compat bất cứ khi nào có thể.

Di chuyển các SDK hiện có

Nếu có một SDK hiện có mà bạn muốn di chuyển sang Thời gian chạy, thì bạn không cần phải tái cấu trúc toàn bộ cơ sở mã cùng một lúc. Thay vào đó, bạn có thể chọn di chuyển dần dần logic SDK hiện có vào SDK mới có hỗ trợ thời gian chạy.

Bạn nên thực hiện 3 giai đoạn sau để di chuyển một SDK hiện có vào SDK Runtime:

  1. Tạo một SDK hỗ trợ thời gian chạy trong giai đoạn chuyển đổi cùng với một SDK tương đương có nhận biết thời gian chạy. Điều này cho phép bạn di chuyển dần logic nghiệp vụ từ SDK hiện có và cung cấp cho bạn một nền tảng kiểm thử để kiểm thử A/B
  2. Di chuyển tất cả logic nghiệp vụ SDK hiện có sang trạng thái ổn định cùng với một SDK mỏng tương đương có nhận biết thời gian chạy để giúp việc di chuyển ứng dụng trở nên dễ dàng hơn
  3. Hỗ trợ các ứng dụng quan tâm bằng cách di chuyển hoàn toàn để sử dụng trực tiếp SDK có thể chạy mà không cần SDK mỏng có nhận biết thời gian chạy

Giai đoạn 1 – Giai đoạn chuyển đổi: SDK có nhận biết thời gian chạy dày

Bạn có thể bắt đầu bằng cách chọn giữ lại một số logic nghiệp vụ trong SDK nhận biết thời gian chạy. Chúng tôi gọi đây là một SDK có nhận biết thời gian chạy dày hoặc trình bao bọc trong ứng dụng.

Phương pháp này cho phép bạn giữ tất cả hoặc một số chức năng của SDK trong thư viện ứng dụng tĩnh, cùng với một SDK mới được tạo có thể kích hoạt thời gian chạy.

Điều này cho phép bạn di chuyển dần các trường hợp sử dụng vào SDK có hỗ trợ thời gian chạy và kiểm thử SDK có hỗ trợ thời gian chạy với SDK hiện có.

Trong giai đoạn này, nhà phát triển ứng dụng không cần thay đổi bất cứ điều gì trong cách họ sử dụng SDK của bạn, vì thư viện ứng dụng tĩnh (SDK nhận biết thời gian chạy) của bạn sẽ thực hiện công việc cần thiết để sử dụng SDK nhận biết thời gian chạy.

Ứng dụng gọi một SDK tĩnh, nhận biết thời gian chạy trong chính ứng dụng đó. SDK này có thể chứa một lớp dịch để gọi SDK hỗ trợ thời gian chạy cũng như các logic nghiệp vụ khác trong đó.
Ứng dụng gọi một SDK tĩnh, hỗ trợ thời gian chạy trong chính ứng dụng đó. SDK này có thể chứa một lớp dịch để gọi SDK hỗ trợ thời gian chạy cũng như các logic nghiệp vụ khác trong đó.

Giai đoạn 2 – Trạng thái ổn định: SDK mỏng có nhận biết thời gian chạy

Ngược lại với SDK có nhận biết thời gian chạy dày, trình bao bọc mỏng hoặc SDK có nhận biết thời gian chạy mỏng (thin RA_SDK) chỉ chứa mã gọi SDK được bật thời gian chạy và bản dịch API trong SDK thư viện được liên kết tĩnh của bạn.

Ở giai đoạn này, bạn phải di chuyển tất cả mã SDK ra khỏi SDK thư viện ứng dụng tĩnh và vào SDK có hỗ trợ thời gian chạy.

Nhà phát triển ứng dụng không phải thực hiện bất kỳ thay đổi nào từ giai đoạn 1 vì SDK nhận biết thời gian chạy mỏng trong ứng dụng của bạn sẽ xử lý việc gọi vào SDK hỗ trợ thời gian chạy bên trong Thời gian chạy SDK.

Ứng dụng gọi một SDK tĩnh trong chính ứng dụng đó và chỉ chứa một lớp dịch.
Ứng dụng gọi một SDK tĩnh trong chính ứng dụng đó, chỉ chứa một lớp dịch.

Giai đoạn 3 – Di chuyển hoàn toàn

Trong giai đoạn cuối cùng này, bạn đã di chuyển tất cả các chức năng của SDK vào SDK có thể chạy và xoá tất cả các thư viện tĩnh khỏi ứng dụng.

Tại thời điểm này, các ứng dụng không còn cần đưa thư viện của bạn vào bản dựng nữa, mà chỉ cần liệt kê các phần phụ thuộc SDK trong tệp kê khai và đưa các lệnh gọi SDK vào mã ứng dụng.

Các lệnh gọi SDK sẽ được hệ thống định tuyến thông qua Thời gian chạy SDK, trong đó SDK hỗ trợ thời gian chạy của bạn sẽ tự động tải.

Cấu trúc của giai đoạn di chuyển đầy đủ, trong đó mã quảng cáo của ứng dụng sẽ gọi trực tiếp SDK có hỗ trợ thời gian chạy.
Cấu trúc của giai đoạn di chuyển hoàn toàn, trong đó mã quảng cáo của ứng dụng sẽ trực tiếp gọi SDK hỗ trợ thời gian chạy.


Giới thiệu

Bước 2: Thiết lập môi trường phát triển