CTS untuk Aplikasi Instan

Aplikasi Instan adalah fitur utama Android 10, jadi penting agar aplikasi tersebut berfungsi dengan baik. Aplikasi Instan diinstal secara implisit, sehingga memiliki serangkaian kemampuan terbatas dan berjalan di sandbox keamanan yang lebih ketat. Karena sifat pembatasan ini yang meluas, setiap bagian sistem berisiko tidak berfungsi dengan baik dengan Aplikasi Instan. Subkumpulan pengujian CTS dibuat untuk memastikan bahwa perilaku yang diizinkan oleh Aplikasi Instan berfungsi. Ide utamanya adalah meminimalkan pertumbuhan ukuran CTS dengan mengisolasi kumpulan pengujian minimal yang akan di-porting. CTS yang berjalan dalam mode Aplikasi Instan berarti menginstal APK pengujian sebagai Aplikasi Instan dan menjalankan pengujian.

Batasan Aplikasi Instan

Aplikasi Instan tidak diinstal oleh pengguna, sehingga aplikasi ini berjalan di sandbox terbatas dengan batasan berikut:

  • Hanya dapat memiliki izin tertentu.
  • Tidak dapat melihat aplikasi lain kecuali jika aplikasi tersebut ditandai sebagai terlihat oleh Aplikasi Instan.
  • Hanya dapat mengakses setelan sistem tertentu.
  • Dapat mengakses hanya properti sistem tertentu.
  • Tidak dapat mengekspos layanan/penyedia.
  • Dapat menerima dan mengirim dengan aturan khusus terkait siaran.

Selain itu, Aplikasi Instan harus memilih untuk mengizinkan sandbox keamanan baru menambahkan lebih banyak batasan. Berbagai perilaku khusus seputar Aplikasi Instan ini mencakup seluruh platform, sehingga harus ada cara untuk memvalidasi bahwa Aplikasi Instan berfungsi seperti yang diharapkan untuk semua perangkat dalam ekosistem.

Pengujian yang berjalan dalam mode Aplikasi Instan

Tidak semua modul CTS memiliki pengujian yang berlaku untuk Aplikasi Instan. Jika fungsi yang diuji oleh modul memiliki interaksi dengan server sistem, pengujian ini harus dijalankan dalam mode Aplikasi Instan. Misalnya, pengujian OpenGL tidak berinteraksi dengan server sistem sehingga tidak perlu dijalankan dalam mode Aplikasi Instan, sedangkan pengujian aksesibilitas berinteraksi dengan server sistem sehingga perlu dijalankan dalam mode Aplikasi Instan.

Selain mengidentifikasi modul mana yang berlaku, pengguna perlu menentukan pengujian mana dalam modul ini yang relevan. Misalnya, pengujian perilaku khusus layanan untuk arsitektur yang dapat di-plug (misalnya, AccessibilityService) tidak berlaku untuk mode Aplikasi Instan karena Aplikasi Instan tidak dapat mengekspos layanan ke aplikasi lain (termasuk platform) sementara pengujian yang memvalidasi perilaku sisi aplikasi berlaku untuk mode Aplikasi Instan. Contoh lainnya adalah pengujian yang memvalidasi perilaku di balik izin yang tidak dapat dimiliki oleh Aplikasi Instan tidak relevan dalam mode Aplikasi Instan. Ada serangkaian pengujian yang hanya berlaku untuk Aplikasi Instan yang memvalidasi aturan seputar cara kerjanya, misalnya, tidak mengekspos layanan, atau tidak melihat aplikasi lain. Biasanya, kode ini sudah ditulis dan tidak memerlukan porting.

Kegagalan pengujian dalam mode Aplikasi Instan

Jika pengujian gagal karena memvalidasi fungsi yang tidak dapat diakses oleh Aplikasi Instan, maka pengujian tersebut tidak berlaku dalam mode Aplikasi Instan. Tandai pengujian agar hanya berjalan dalam mode Aplikasi Penuh dengan menganotasinya dengan @AppModeFull. Anda dapat menerapkan anotasi ini ke tingkat class untuk mengecualikan semua pengujian di dalamnya.

Jika pengujian gagal karena beberapa fungsi yang dapat diakses oleh Aplikasi Instan rusak, ajukan bug.

Pemecahan masalah

Jika pengujian Anda gagal dengan pesan Failed to install MyCtsModule.apk on DEVICE. Alasan: '-116', cari pesan PackageManager di logcat. Misalnya, jika muncul pesan Can't replace Full App with Instant App: your_app, uninstal aplikasi Anda terlebih dahulu dengan adb.