| 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 SDK Runtime dan berkomunikasi dengan aplikasi melalui komunikasi antar-proses (IPC).
- SDK yang kompatibel dengan runtime (RA SDK): SDK yang tidak kompatibel dengan runtime, ditautkan ke aplikasi secara statis, yang dapat berisi kode SDK yang ada serta kode baru untuk memanggil SDK yang kompatibel dengan runtime.
- Hal ini terkadang juga disebut sebagai ditautkan secara statis atau SDK statis.
- Shim: Library Jetpack yang membantu mengabstraksi komunikasi di seluruh proses atau komunikasi antar-proses (IPC), dan mempertahankan antarmuka aplikasi-SDK yang sama.
Arsitektur Runtime SDK
Runtime SDK mengadopsi jenis model klien-server.
Perbedaan utamanya adalah "klien" (aplikasi) dan "server" (SDK yang diaktifkan untuk 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 mengabstraksi komunikasi antar-proses atau komunikasi antar-proses (IPC). Hal ini juga membantu mempertahankan antarmuka SDK aplikasi yang sama.
- Library backcompat: Library ini menangani kompatibilitas mundur, 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 mendukung runtime atau mengubah ukuran dan tata letak ulang tampilan.
Perubahan pada alur penginstalan
Saat membangun SDK yang mendukung runtime di Android Studio atau alat lain, Anda membuat Android SDK Bundle (ASB), format publikasi untuk SDK yang mendukung runtime.
bundletool memproses ASB untuk menghasilkan APK bagi SDK yang mendukung runtime: APK terpisah ini berisi kode SDK Anda, tetapi tidak berisi kode aplikasi.
File manifes aplikasi mendeklarasikan dependensi pada nama dan versi SDK yang mendukung runtime Anda, dan dependensi ini diselesaikan oleh aplikasi penginstal.
Setelah APK SDK diperoleh oleh penginstal, penginstalan dimulai dengan penginstalan APK SDK. Setelah berhasil, proses dilanjutkan dengan menginstal APK aplikasi.
Alurnya berbeda jika aplikasi diinstal di Android 13 dan yang lebih lama, serta di perangkat yang tidak mendukung SDK Runtime. Dalam skenario ini, toko menginstal satu APK yang berisi SDK yang diaktifkan runtime dan kode aplikasi Anda. 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 bagi 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 diaktifkan untuk runtime secara lancar, terlepas dari dukungan perangkat untuk Runtime SDK.
Dengan mengikuti panduan ini, SDK yang mendukung runtime Anda akan kompatibel dengan versi sebelumnya secara default, dan tidak ada langkah lebih lanjut yang harus Anda lakukan.
Kami menandai tindakan yang terkait dengan 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 dimigrasikan 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 kompatibel dengan runtime.
Kami merekomendasikan tiga fase berikut untuk memigrasikan SDK yang ada ke SDK Runtime:
- Membangun SDK yang mendukung runtime periode transisi bersama dengan SDK tebal yang kompatibel dengan runtime. 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 bersama dengan SDK tipis yang kompatibel dengan runtime untuk mempermudah migrasi aplikasi
- Mendukung aplikasi yang berminat dengan migrasi penuh untuk menggunakan SDK yang mendukung runtime secara langsung tanpa SDK tipis yang kompatibel dengan runtime
Fase 1 - Periode transisi: SDK yang kompatibel dengan runtime tebal
Anda dapat memulai dengan memilih untuk menyimpan beberapa logika bisnis di SDK yang kompatibel dengan runtime. Kita menyebutnya SDK tebal yang kompatibel dengan runtime atau wrapper dalam aplikasi.
Dengan pendekatan ini, Anda dapat menyimpan semua atau beberapa kemampuan SDK di library aplikasi statis, bersama dengan SDK yang baru dibuat 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 kompatibel dengan runtime) yang melakukan pekerjaan yang diperlukan untuk menggunakan SDK yang kompatibel dengan runtime.
Fase 2 - Status stabil: SDK yang ringan dan kompatibel dengan runtime
Berbeda dengan SDK yang memiliki kemampuan runtime tebal, wrapper tipis, atau SDK yang memiliki kemampuan runtime tipis (RA_SDK tipis), hanya berisi terjemahan API dan kode panggilan SDK yang diaktifkan runtime di SDK library yang ditautkan secara statis.
Pada tahap ini, Anda seharusnya telah memigrasikan semua kode SDK dari SDK library aplikasi statis ke SDK yang diaktifkan saat runtime.
Developer aplikasi tidak perlu melakukan perubahan apa pun dari fase 1 karena SDK tipis yang kompatibel dengan runtime dalam aplikasi Anda menangani panggilan ke SDK dengan dukungan runtime di dalam Runtime SDK.
Fase 3 - Migrasi penuh
Pada fase akhir ini, Anda telah memigrasikan semua kemampuan SDK ke SDK yang diaktifkan saat runtime, dan menghapus semua library statis dari aplikasi.
Pada tahap ini, klien aplikasi Anda tidak perlu lagi menyertakan library Anda dalam build-nya, tetapi hanya mencantumkan dependensi SDK dalam manifes dan menyertakan panggilan SDK dalam kode aplikasinya.
Panggilan SDK dirutekan melalui sistem ke Runtime SDK, tempat SDK dengan dukungan runtime Anda dimuat secara otomatis.
Langkah 2: Siapkan lingkungan pengembangan Anda