Topik wawancara representatif

Wawancara umum: Bagaimana Anda memigrasikan aplikasi Android ke edge-to-edge Android 16?

UmumSedang
Tim Redaksi Offer.ccDipublikasikan Diperbarui

Pertanyaan

Aplikasi Android Anda mengandalkan tata letak jendela (window layout) dan penanganan bilah sistem (system-bar) lama. Android 16 menghapus opsi opt-out edge-to-edge untuk target 16+, jadi bagaimana Anda merencanakan migrasi dan perilisannya?

Skenario

Anda mengelola aplikasi Android yang menggabungkan View lama, Jetpack Compose, dan SDK pihak ketiga. Untuk aplikasi yang menargetkan Android 16+, windowOptOutEdgeToEdgeEnforcement dihapus, sehingga aplikasi harus menangani inset jendela dengan benar. Jelaskan bagaimana Anda menemukan risiko, mengubah tata letak, memvalidasi faktor bentuk perangkat, dan mengontrol risiko rilis.

Apa yang dievaluasi pewawancara

  • Memisahkan “berjalan secara kompatibel di Android 16” dari “menaikkan targetSdkVersion ke 16.”
  • Memeriksa bilah sistem, IME, cutout, area gestur, dan kontainer scroll secara sistematis.
  • Mencakup kombinasi View, Compose, pustaka, dan SDK.
  • Merancang toggle kompatibilitas, canary, dan rollback yang dapat dipantau.

Pertanyaan klarifikasi

Konfirmasikan SDK target dan kompilasi, versi Android yang didukung, pembagian View/Compose, cakupan orientasi potret/lanskap dan perangkat lipat (foldable), serta penggunaan kamera layar penuh, peta, atau WebView. Tanyakan baseline untuk uji tangkapan layar, crash, dan keluhan tata letak, serta apakah SDK pihak ketiga mendokumentasikan dukungan edge-to-edge.

Jawaban 30 detik

Saya akan menggunakan dua fase. Pertama, mengekspos perubahan perilaku pada Android 16 tanpa menaikkan target, lalu memisahkan perbaikan inset dari peningkatan target. Memeriksa tata letak root, bilah sistem, IME, area gestur, dan scrolling di seluruh View dan Compose. Merilis build khusus kompatibilitas ke kelompok kecil pengguna dan memantau crash, keluhan oklusi (elemen tertutup), dan penyelesaian alur utama. Menaikkan target hanya setelah regresi tangkapan layar dan pengujian matriks perangkat berhasil dilewati. Memisahkan perubahan target dari fitur besar sehingga tata letak yang bermasalah dapat di-rollback dengan bersih.

Penalaran langkah demi langkah

1. Pisahkan kompatibilitas dari peningkatan target

Panduan migrasi Android menyarankan untuk menguji aplikasi yang ada di Android 16 terlebih dahulu; banyak perbaikan tidak memerlukan perubahan target langsung. Kemudian tangani perubahan perilaku untuk aplikasi yang menargetkan Android 16, menjaga sumber regresi tetap jelas.

2. Buat daftar periksa inset

Periksa apakah root menggunakan inset bilah sistem dan apakah toolbar, navigasi bawah, item daftar terakhir, input, dan dialog terhalang. Tetapkan satu konvensi inset untuk Compose dan hindari padding ganda pada View lama. Uji layar kamera, peta, dan WebView dengan aturan area aman (safe-area) masing-masing.

3. Gunakan alat kompatibilitas untuk mempersempit cakupan

Toggle kompatibilitas Android 16 dapat mengaktifkan perilaku yang ditargetkan tanpa mengubah targetSdkVersion. Tambahkan ke matriks perangkat otomatis yang mencakup halaman 4 KB/16 KB, orientasi, navigasi tiga tombol/gestur, perangkat lipat, dan penskalaan font. Catat ID perubahan dan perbedaan tangkapan layar.

4. Canary dan rollback

Rilis build kompatibilitas khusus tata letak, lalu naikkan target dalam versi beta dan 1% traffic produksi. Pantau crash saat startup, ANR, keberhasilan ketukan pada halaman utama, keluhan oklusi di bagian bawah, dan error SDK. Jaga agar migrasi target tetap terisolasi; lakukan rollback ke build sebelumnya atau nonaktifkan entri yang terpengaruh saat diperlukan.

Contoh jawaban berkualitas tinggi

Saya akan menetapkan baseline kompatibilitas dengan menginstal build produksi saat ini pada emulator dan perangkat fisik Android 16, menjalankan setiap alur, dan mengambil tangkapan layar area tepi. Kemudian saya hanya akan mengaktifkan perilaku edge-to-edge melalui toggle kompatibilitas untuk mengidentifikasi apakah tata letak root, SDK, atau perubahan target yang menyebabkan masalah. Saya akan membuat satu lapisan penanganan inset, secara eksplisit menetapkan penggunaan atas, bawah, dan IME, serta mencegah padding ganda antara View/Compose; kamera, peta, WebView, dan dialog mendapatkan pengujian area aman terpisah. Rilis perbaikan kompatibilitas tanpa mengubah target. Setelah pengujian tangkapan layar, aksesibilitas, orientasi, perangkat lipat, dan IME berhasil lolos, naikkan target sebagai perubahan terisolasi: beta terlebih dahulu, lalu canary 1%. Lacak crash, ANR, konversi inti, dan umpan balik oklusi; lakukan rollback atau nonaktifkan entri baru jika terjadi regresi. Ini memenuhi perubahan platform sambil menjaga atribusi yang jelas dan kemampuan rollback.

Kesalahan umum

  • Menaikkan targetSdkVersion secara langsung dan kehilangan atribusi regresi.
  • Hanya memperbaiki bilah status sambil melewatkan navigasi, IME, perangkat lipat, ujung daftar, dan dialog.
  • Menggunakan inset di beberapa lapisan dan menciptakan padding ganda.
  • Hanya menguji pada emulator dan melewatkan SDK, perangkat fisik, serta penskalaan font.
  • Menggabungkan migrasi edge-to-edge dengan fitur besar sehingga kehilangan rollback independen.

Pertanyaan lanjutan dan tanggapan

“Apakah targetSdkVersion harus langsung menjadi 16?”

Tidak. Uji target saat ini di Android 16 dan perbaiki kompatibilitasnya terlebih dahulu. Tingkatkan target secara terpisah sesuai dengan persyaratan Play dan jadwal produk.

“Bagaimana Anda menangani SDK pihak ketiga?”

Inventarisasi SDK tersebut dan uji pada perangkat fisik menggunakan toggle kompatibilitas. Utamakan versi yang mendokumentasikan dukungan edge-to-edge; jika tidak, tambahkan pembungkus safe-area atau isolasi layar yang terpengaruh.

“Bagaimana Anda membuktikan versi Android yang lebih lama tetap berfungsi?”

Jalankan matriks tangkapan layar dan alur kritis yang sama pada versi minimum yang didukung, Android 15, dan Android 16 di seluruh orientasi, mode navigasi, dan skala font. Bandingkan area yang dapat diketuk dan oklusi, bukan hanya keberhasilan startup.

Sumber publik

Pertanyaan terkait