Key concepts | Set up your development environment | Build an RE SDK | Consume the RE SDK | Testing, and building for distribution |
Konsep utama
Bagian ini menjelaskan arsitektur Runtime SDK, cara menginstal SDK yang mendukung runtime, kompatibilitas mundur, dan cara memigrasikan SDK yang ada ke Runtime SDK.
Glosarium
- SDK dengan dukungan runtime (RE SDK): SDK yang dibuat untuk berjalan di lingkungan Runtime SDK dan berkomunikasi dengan aplikasi melalui komunikasi antarproses (IPC).
- Runtime-aware SDK (RA SDK): SDK yang tidak mendukung runtime, ditautkan ke aplikasi
secara statis, yang dapat berisi kode SDK yang ada serta kode baru untuk memanggil SDK yang mendukung runtime.
- Hal ini terkadang juga disebut sebagai tertaut secara statis atau SDK statis.
- Shim: Library Jetpack yang membantu komunikasi abstrak di seluruh proses atau komunikasi antar-proses (IPC), dan mempertahankan antarmuka SDK aplikasi yang sama.
Arsitektur Runtime SDK
Runtime SDK mengadopsi model jenis klien-server.
Perbedaan utamanya adalah "klien" (aplikasi) dan "server" (SDK yang mengaktifkan runtime) berjalan di perangkat yang sama, dan komunikasi ini terjadi di seluruh proses.
Untuk membantu mengatasi tantangan ini, kami telah membuat library dan alat Jetpack berikut untuk menyederhanakan integrasi SDK aplikasi dalam Runtime SDK:
- Library shim: Library wrapper (atau shim) membantu komunikasi abstrak di seluruh proses atau komunikasi antar-proses (IPC). Hal ini juga membantu mempertahankan antarmuka SDK aplikasi yang sama.
- Library backcompat: Library ini menangani kompatibilitas mundur, sehingga memastikan SDK Anda kompatibel, terlepas dari apakah Runtime SDK tersedia atau tidak.
- Library UI: Kami juga menyediakan library untuk menangani presentasi jarak jauh, seperti mengambil UI dari SDK yang mengaktifkan runtime atau mengubah ukuran dan menata ulang tampilan.

Perubahan pada alur penginstalan
Saat mem-build SDK yang mendukung runtime di Android Studio atau alat lainnya, Anda akan membuat Android SDK Bundle (ASB), format publikasi untuk SDK yang mendukung runtime.
bundletool memproses ASB untuk menghasilkan APK untuk SDK yang mendukung runtime: APK terpisah ini berisi kode SDK, tetapi tidak berisi kode aplikasi.
File manifes aplikasi mendeklarasikan dependensi pada nama dan versi SDK yang mendukung runtime, dan dependensi ini di-resolve oleh aplikasi penginstal.
Setelah APK SDK bersumber dari penginstal, penginstalan dimulai dengan penginstalan APK SDK. Setelah berhasil, langkah selanjutnya adalah menginstal APK aplikasi.
Alur ini berbeda jika aplikasi diinstal di Android 13 dan yang lebih lama, serta di perangkat yang tidak mendukung Runtime SDK. Dalam skenario ini, toko akan menginstal satu APK yang berisi SDK yang mendukung runtime dan kode aplikasi. Baca bagian distribusi untuk mempelajari lebih lanjut.
Setiap kali aplikasi bergantung pada SDK ini dalam produksi, app store akan membuat APK SDK yang benar dari ASB ini, dan menginstalnya.
Kompatibilitas mundur
Karena Runtime SDK telah diperkenalkan di Android 14, kami perlu mendukung versi sebelumnya tanpa menimbulkan overhead untuk developer SDK atau Aplikasi.
Untuk menangani kompatibilitas mundur di Android 13 dan yang lebih lama, kami telah memperkenalkan library Jetpack yang dapat menjalankan SDK yang mendukung runtime dengan lancar, terlepas dari dukungan perangkat untuk Runtime SDK.
Dengan mengikuti panduan ini, SDK yang mendukung runtime akan kompatibel dengan versi sebelumnya secara default, dan tidak ada langkah lebih lanjut yang harus Anda lakukan.
Kami menyoroti tindakan yang terhubung ke kompatibilitas mundur pada tahap yang relevan, tetapi secara umum, Anda harus memastikan bahwa Anda telah mendeklarasikan dependensi yang tepat, dan bahwa Anda menggunakan class *Compat
jika berlaku.
Memigrasikan SDK yang ada
Jika memiliki SDK yang ada dan ingin memigrasikannya ke Runtime, Anda tidak perlu memfaktorkan ulang seluruh codebase sekaligus. Sebagai gantinya, Anda dapat memilih untuk memigrasikan logika SDK yang ada secara bertahap ke SDK baru yang mendukung runtime.
Sebaiknya lakukan tiga fase berikut untuk memigrasikan SDK yang ada ke Runtime SDK:
- Mem-build SDK yang mendukung runtime periode transisi beserta SDK yang mendukung runtime tebal. Hal ini memungkinkan Anda memigrasikan logika bisnis secara bertahap dari SDK yang ada, dan memberi Anda platform pengujian untuk pengujian A/B
- Memindahkan semua logika bisnis SDK yang ada ke status stabil beserta SDK yang mendukung runtime tipis untuk memudahkan migrasi aplikasi
- Mendukung aplikasi yang berminat dengan migrasi penuh untuk menggunakan SDK yang mendukung runtime Anda secara langsung tanpa SDK yang mendukung runtime tipis
Fase 1 - Periode transisi: SDK yang mendukung runtime tebal
Anda dapat memulai dengan memilih untuk menyimpan beberapa logika bisnis di SDK yang mendukung runtime. Kami menyebutnya SDK yang mendukung runtime tebal atau wrapper dalam aplikasi.
Pendekatan ini memungkinkan Anda menyimpan semua atau beberapa kemampuan SDK di library aplikasi statis, bersama dengan SDK yang baru di-build dan mendukung runtime.
Hal ini memungkinkan Anda memigrasikan kasus penggunaan secara bertahap ke SDK yang mendukung runtime, dan menguji SDK yang mendukung runtime terhadap SDK yang ada.
Pada fase ini, developer aplikasi tidak perlu mengubah apa pun dalam cara mereka menggunakan SDK Anda, karena library aplikasi statis (SDK yang mendukung runtime) yang melakukan tugas yang diperlukan untuk menggunakan SDK yang mendukung runtime.

Tahap 2 - Status stabil: SDK yang mendukung runtime tipis
Berbeda dengan SDK yang mendukung runtime tebal, wrapper tipis, atau SDK yang mendukung runtime tipis (RA_SDK tipis), hanya berisi terjemahan API dan kode panggilan SDK yang mendukung runtime di SDK library yang ditautkan secara statis.
Pada tahap ini, Anda harus memigrasikan semua kode SDK dari SDK library aplikasi statis dan ke SDK yang mengaktifkan runtime.
Developer aplikasi tidak perlu melakukan perubahan apa pun dari fase 1 karena SDK dalam aplikasi yang mendukung runtime tipis menangani panggilan ke SDK yang mendukung runtime di dalam Runtime SDK.

Fase 3 - Migrasi penuh
Pada fase terakhir ini, Anda telah memigrasikan semua kemampuan SDK ke SDK yang mendukung runtime, dan menghapus semua library statis dari aplikasi.
Pada tahap ini, klien aplikasi Anda tidak perlu lagi menyertakan library dalam build-nya, tetapi hanya mencantumkan dependensi SDK dalam manifes dan menyertakan panggilan SDK dalam kode aplikasinya.
Panggilan SDK dirutekan oleh sistem ke Runtime SDK, tempat SDK yang mendukung runtime dimuat secara otomatis.

Langkah 2: Siapkan lingkungan pengembangan Anda