kesuksesan jangka panjang aplikasi Anda dari segi jumlah penginstalan dan ulasan pengguna, engagement, dan retensi.
Untuk memberikan fondasi yang kokoh bagi aplikasi berkualitas, ikuti pedoman kualitas aplikasi inti.
Pedoman ini menentukan kualitas minimum yang harus dipenuhi oleh semua aplikasi.
Kualitas aplikasi adaptif
Aplikasi Android berjalan di berbagai perangkat—mulai dari ponsel ringkas hingga tablet, perangkat foldable, desktop, layar terhubung, sistem infotainment mobil, TV, dan XR. Mode jendela seperti layar terpisah dan jendela desktop memungkinkan aplikasi berjalan di bagian layar yang dapat diubah ukurannya.
Ikuti pedoman kualitas aplikasi adaptif—bersama dengan pedoman kualitas aplikasi inti—untuk:
- Membuat aplikasi yang dioptimalkan untuk semua faktor bentuk dan ukuran tampilan
- Mendapatkan peringkat aplikasi yang lebih tinggi di listingan dan penelusuran Google Play
- Mendapatkan lebih banyak pengguna dan meningkatkan retensi pengguna
Panduan
Panduan inti berikut membantu Anda membuat aplikasi dasar berkualitas tinggi.
Pengalaman pengguna
Aplikasi Anda harus memberikan pola interaksi dan desain visual Android standar untuk pengalaman pengguna yang konsisten dan intuitif.
Gunakan Komponen desain material untuk membuat antarmuka pengguna aplikasi Anda sebagai pengganti komponen platform Android jika memungkinkan. Desain Material memberikan tampilan dan nuansa Android modern serta konsistensi UI di seluruh versi Android.
| ID | Pengujian | Deskripsi |
|---|---|---|
| Kegunaan | ||
| Kegunaan:UX | T-Usability:Core, T-SD-Card |
Aplikasi memberikan pengalaman pengguna yang konsisten untuk semua kasus penggunaan aplikasi di semua faktor bentuk. |
| Kegunaan:Pengganti | T-Usability:Switcher, T-SD-Card |
Aplikasi masuk ke latar belakang saat fokus beralih ke aplikasi lain. Aplikasi kembali ke latar depan saat diaktifkan kembali dari pengalih aplikasi Terbaru. |
| Kegunaan:Tidur | T-Usability:Sleep, T-SD-Card |
Saat menjadi aplikasi latar depan, aplikasi akan dijeda saat perangkat memasuki mode tidur dan dilanjutkan saat perangkat aktif. |
| Kegunaan:Kunci | T-Kegunaan:Lock, T-SD-Card |
Saat menjadi aplikasi latar depan, aplikasi akan dijeda saat perangkat dikunci dan dilanjutkan saat perangkat dibuka kuncinya. |
| Antarmuka pengguna | ||
| UI:Paritas | T-UI:Transisi |
Orientasi tampilan dan status lipatan pada dasarnya mengekspos fitur dan tindakan yang sama serta mempertahankan paritas fungsional. |
| UI:Layar Penuh | T-UI:Transisi |
Aplikasi mengisi jendela aplikasi dalam kedua orientasi dan tidak memiliki tampilan lebar karena perubahan konfigurasi, termasuk saat perangkat dilipat dan dibentangkan. Tampilan lebar kecil untuk menggantikan variasi kecil di geometri layar diperbolehkan. |
| UI:Transisi | T-UI:Transisi | Aplikasi menangani transisi cepat antara orientasi tampilan dan tindakan melipat serta membentangkan perangkat tanpa masalah rendering tampilan dan tanpa kehilangan status. |
| Kualitas visual | ||
| Visual:Display | T-Visual:Display |
Aplikasi menampilkan grafis, teks, gambar, dan elemen UI lainnya tanpa pikselasi, blur, atau distorsi yang kentara.
|
| Visual:Keterbacaan | T-Visual:Readability | Aplikasi memastikan keterbacaan teks dan blok teks dengan membatasi panjang baris hingga 45-75 karakter (termasuk spasi) untuk setiap bahasa yang didukung aplikasi. |
| Visual:Tema | T-Visual:Themes | Konten aplikasi, dan semua konten web yang diakses oleh aplikasi, mendukung tema terang dan tema gelap. |
| Navigasi | ||
| Nav:BackButton | T-Nav:Back | Aplikasi mendukung navigasi tombol kembali standar dan tidak menggunakan perintah tombol kembali khusus di layar. |
| Nav:BackGesture | T-Nav:Back | Aplikasi mendukung navigasi gestur untuk kembali dan beralih ke layar utama. |
| Nav:State | T-Nav:State, T-Nav:Back |
Aplikasi mempertahankan status pengguna atau aplikasi saat meninggalkan latar depan dan mencegah kehilangan data secara tidak sengaja akibat navigasi mundur dan perubahan status lainnya. Saat kembali ke latar depan, aplikasi akan memulihkan status yang dipertahankan dan transaksi stateful yang tertunda. Contohnya mencakup perubahan pada kolom yang dapat diedit, progres game, menu, video, dan bagian lain pada aplikasi.
|
| Notifikasi | ||
| Notify:Info | T-Notify:Info |
Notifikasi memberikan informasi yang relevan terkait aplikasi Anda.
|
| Notify:Messaging | T-Notify:Info |
Untuk aplikasi pesan, aplikasi sosial, dan percakapan:
|
| Aksesibilitas | ||
| Akses:Target | T-Access:Targets | Target sentuh setidaknya 48 dp. Lihat panduan Tata letak dan tipografi Desain Material. |
| Akses:Kontras | T-Access:Contrast |
Konten teks dan latar depan aplikasi mempertahankan rasio kontras berikut dengan latar belakang aplikasi:
Pelajari warna dan kontras lebih lanjut. |
| Akses:Deskripsi | T-Access:Deskripsi | Deskripsikan setiap elemen UI,
kecuali TextView, menggunakan contentDescription. |
Fungsi
Aplikasi Anda harus mengimplementasikan perilaku fungsional berikut.
| ID | Pengujian | Deskripsi |
|---|---|---|
| Audio | ||
| Audio:Init | T-Audio:Init |
Saat pengguna memulai pemutaran audio, aplikasi harus melakukan salah satu tindakan berikut dalam satu detik:
|
| Audio:Fokus | T-Audio:Focus | Aplikasi harus meminta fokus audio saat audio mulai diputar dan mengabaikannya saat pemutaran berhenti. |
| Audio:Interupsi | T-Audio:Interrupt | Aplikasi harus menangani permintaan aplikasi lain untuk fokus audio. Misalnya, aplikasi dapat mengurangi volume pemutaran saat aplikasi lain memutar ucapan. |
| Audio:Latar Belakang | T-Audio:Background | Aplikasi harus mendukung pemutaran di latar belakang. |
| Audio:Notifikasi | T-Audio:Notification | Saat memutar audio di latar belakang, aplikasi harus membuat notifikasi yang dibuat dengan gaya MediaStyle. |
| Audio:Lanjutkan | T-Audio:Resume | Jika aplikasi berada di latar belakang dan audio dijeda, audio dilanjutkan saat aplikasi kembali ke latar depan, atau aplikasi harus menunjukkan kepada pengguna bahwa pemutaran sedang dijeda. |
| Video | ||
| Video:PiP | T-Video:PiP | Jika memutar video, aplikasi harus mendukung pemutaran picture-in-picture. |
| Video:Encoding | T-Video:Encoding | Jika mengenkode video, aplikasi harus melakukannya menggunakan standar kompresi video HEVC. |
| Berbagi | ||
| Berbagi:Sheet | T-Sharing:Sheet | Aplikasi harus menggunakan Android Sharesheet saat berbagi konten. Aplikasi dapat menyarankan target yang tidak tersedia untuk solusi khusus. |
| Layanan latar belakang | ||
| Latar belakang:Layanan | T-Background:Services |
Aplikasi menghindari menjalankan layanan berdurasi panjang dan tidak perlu di latar belakang. Untuk memastikan perangkat pengguna berjalan dengan lancar. Catatan: Sistem menerapkan berbagai batasan pada layanan latar belakang. Berikut adalah penggunaan layanan latar belakang yang buruk:
Untuk mengetahui informasi selengkapnya, lihat Ringkasan tugas latar belakang. |
Performa dan stabilitas
Aplikasi Anda harus memberikan performa, stabilitas, kompatibilitas, dan responsivitas yang optimal.
| ID | Pengujian | Deskripsi |
|---|---|---|
| Performa | ||
| Performa:Startup | T- Performance:Startup | Aplikasi dimuat dengan cepat atau memberikan masukan di layar kepada pengguna (indikator progres atau tanda serupa) jika aplikasi perlu waktu lebih dari dua detik untuk dimuat. |
| Performa:FPS | T-Performance:FPS | Aplikasi merender frame setiap 16 (atau kurang) milidetik untuk menampilkan minimal 60 frame per detik. Untuk mendapatkan bantuan terkait masalah rendering, lihat Rendering lambat. |
| Performa:Strict | T-Performance:Strict | Dengan StrictMode diaktifkan (lihat bagian pengujian StrictMode), tidak ada kedipan merah (peringatan performa dari StrictMode) yang terlihat saat menguji aplikasi. |
| Stabilitas | ||
| Stabilitas:ANR | T-Stability:ANR | Aplikasi tidak error atau memblokir UI thread yang menyebabkan error ANR (Android Not Responding). Gunakan laporan pra-peluncuran Google Play untuk mengidentifikasi potensi masalah stabilitas. Setelah deployment, pantau halaman Android Vitals di konsol Google Play. |
| SDK | ||
| SDK:Platform | T-SDK:Platform | Aplikasi berjalan di platform Android versi publik terbaru tanpa mengalami error atau memberikan pengaruh besar terhadap fungsionalitas inti. |
| SDK:Target | T-SDK:Terbaru | Aplikasi menargetkan Android SDK terbaru yang diperlukan untuk menyesuaikan dengan persyaratan Google Play dengan menetapkan nilai targetSdk dalam file build.gradle modul aplikasi. |
| SDK:Compile | T-SDK:Terbaru | Aplikasi di-build dengan Android SDK terbaru dengan menetapkan nilai compileSdk dalam file build.gradle modul aplikasi. |
| SDK:3P | T-SDK:3P, T-SDK:Non |
Setiap SDK Google atau pihak ketiga yang digunakan adalah yang terbaru. Peningkatan apa pun pada SDK ini terkait stabilitas, kompatibilitas, atau keamanan harus tersedia bagi pengguna secara tepat waktu. Untuk SDK Google, gunakan SDK yang didukung oleh layanan Google Play jika tersedia. SDK ini kompatibel dengan versi sebelumnya, menerima update otomatis, mengurangi ukuran paket aplikasi Anda, dan menggunakan resource di perangkat dengan efisien. |
| SDK:Non | T-SDK:Non | Aplikasi tidak menggunakan antarmuka non-SDK. |
| SDK:Debug | T-SDK:Debug | Tidak ada library debug yang disertakan dalam aplikasi produksi. Library debug yang disertakan dalam aplikasi dapat menyebabkan masalah performa dan keamanan. |
| Baterai | ||
| Baterai:Kelola | T-Battery:Kelola |
Aplikasi mendukung fitur pengelolaan daya Istirahatkan dan Aplikasi Standby dengan benar. Aplikasi dapat meminta pengecualian pemeliharaan daya. Lihat Dukungan untuk kasus penggunaan lainnya dalam Mengoptimalkan aplikasi untuk mode Istirahatkan dan Aplikasi Standby. |
Privasi dan keamanan
Aplikasi menangani data pengguna dan informasi pribadi dengan aman serta memberikan tingkat izin yang sesuai.
Aplikasi yang dipublikasikan di Google Play Store juga harus mematuhi kebijakan Data Pengguna Google Play untuk melindungi privasi pengguna.
| ID | Pengujian | Deskripsi |
|---|---|---|
| Izin | ||
| Izin:Min | T-Permissions:Min | Aplikasi hanya meminta izin minimum absolut yang diperlukan untuk mendukung kasus penggunaan saat ini. Untuk izin tertentu, seperti lokasi, aplikasi menggunakan spesifikasi kasar sebagai pengganti presisi jika memungkinkan. Lihat Meminimalkan permintaan izin Anda. |
| Izin:Sensitif | T-Permissions:Sensitive |
Aplikasi meminta izin untuk mengakses data sensitif (seperti grup izin SMS atau Log Panggilan atau lokasi) atau layanan berbayar (seperti Telepon atau SMS) hanya jika terkait langsung dengan kasus penggunaan inti aplikasi. Implikasi yang terkait dengan izin ini harus diungkapkan secara jelas kepada pengguna. Bergantung pada cara aplikasi Anda menggunakan izin, cara alternatif untuk memenuhi kasus penggunaan aplikasi Anda mungkin dapat dilakukan tanpa mengandalkan akses ke informasi sensitif. Misalnya, daripada meminta izin terkait kontak pengguna, gunakan intent implisit untuk meminta akses. |
| Izin:Runtime | T-Permissions:Runtime | Aplikasi meminta izin runtime saat fungsionalitas diminta, bukan selama pengaktifan aplikasi. |
| Izin:Menjelaskan | T-Permissions:Explain | Aplikasi menjelaskan dengan jelas alasan izin diperlukan. |
| Izin:Penurunan Kualitas | T-Permissions:Degrade | Aplikasi melakukan degradasi halus saat pengguna menolak atau mencabut izin. Aplikasi tidak boleh mencegah akses pengguna sepenuhnya. |
| Data dan file | ||
| Data:Sensitif | T-Data:Sensitive, T-Data:Handling |
Semua data sensitif disimpan di penyimpanan internal aplikasi. |
| Data:Log | T-Data:Log | Tidak ada data pengguna pribadi atau sensitif yang dicatat ke log sistem atau log khusus aplikasi. |
| Data:ID | T-Data:IDs | Aplikasi tidak menggunakan ID hardware apa pun yang tidak dapat direset, seperti IMEI, untuk tujuan identifikasi. |
| Identitas | ||
| Identitas:Petunjuk | T-Identity:Hints | Aplikasi memberikan petunjuk untuk mengisi otomatis kredensial akun dan informasi sensitif lainnya, seperti info kartu kredit, alamat fisik, dan nomor telepon. |
| Identity:CredMan | T-Identity:CredMan | Aplikasi mengintegrasikan Credential Manager untuk Android guna memberikan pengalaman login yang lancar dan menyatukan dukungan untuk kunci sandi, identitas gabungan, dan sandi. |
| Identitas:Biografi | T-Identity:Bio | Aplikasi mendukung autentikasi biometrik untuk melindungi transaksi keuangan atau informasi sensitif, seperti dokumen pengguna yang penting. |
| Komponen Aplikasi | ||
| Komponen:Ekspor | T-Components:Export |
Aplikasi menetapkan atribut Hanya komponen aplikasi yang berbagi data dengan aplikasi lain, atau komponen yang harus dipanggil oleh aplikasi lain, yang akan diekspor. |
| Komponen:Izin | T-Components:Permissions |
Semua intent dan siaran mengikuti praktik terbaik:
|
| Komponen:Perlindungan | T-Components:Protection |
Semua komponen yang membagikan konten antar-aplikasi menggunakan Aplikasi tidak boleh mengandalkan akses ke daftar paket yang diinstal. |
| Jaringan | ||
| Jaringan:Traffic | T-Network:Traffic | Semua traffic jaringan dikirim melalui SSL. |
| Jaringan:Config | T-Network:Config | Aplikasi mendeklarasikan konfigurasi keamanan jaringan. |
| Network:Play | T-Network:Play | Jika aplikasi menggunakan layanan Google Play, penyedia keamanan akan diinisialisasi pada pengaktifan aplikasi. |
| WebView | ||
| WebView:Config | T-WebViews:Config, T-WebViews:Nav |
Jangan gunakan setAllowUniversalAccessFromFileURLs() untuk mengakses konten lokal. Sebagai gantinya, gunakan WebViewAssetLoader. |
| WebView:JavaScript | T-WebView:JavaScript, T-WebView:Nav |
Tampilan web tidak menggunakan Di Android 6.0 (level API 23 dan yang lebih tinggi), gunakan saluran pesan HTML. |
| Eksekusi | ||
| Eksekusi:Paket | T-Execution:Bundles |
Aplikasi tidak secara dinamis memuat kode dari luar APK aplikasi. Gunakan Android App Bundle, yang mencakup Play Feature Delivery dan Play Asset Delivery. Mulai Agustus 2021, penggunaan Android App Bundle diwajibkan untuk semua aplikasi baru di Google Play Store. |
| Kriptografi | ||
| Crypto:Algorithms | T-Crypto:Algorithms | Aplikasi menggunakan string, algoritma kriptografi yang disediakan platform, dan generator angka acak. Selain itu, aplikasi tidak menerapkan algoritme khusus. |
Google Play
Aktifkan aplikasi Anda agar dipublikasikan di Google Play.
| ID | Pengujian | Deskripsi | |
|---|---|---|---|
| Kebijakan | |||
| Play:Policies | T-Play:Policies | Aplikasi secara ketat mematuhi ketentuan Kebijakan Konten Developer Google Play, tidak menawarkan konten yang tidak pantas, dan tidak menggunakan kekayaan intelektual atau merek orang lain. | |
| Play:Maturity | T-Play:Policies | Tingkat kedewasaan aplikasi disetel dengan tepat berdasarkan Pedoman Rating Konten. | |
| Halaman detail aplikasi | |||
| Play:Grafis | T-Play:Graphics, T-Play:Assets |
Gambar fitur aplikasi mengikuti panduan yang diuraikan dalam artikel dukungan ini. Pastikan bahwa:
|
|
| Play:NonAndroid | T-Play:Assets | Screenshot dan video aplikasi tidak menampilkan atau mereferensikan perangkat non-Android. | |
| Play:Menyesatkan | T-Play:Assets | Screenshot atau video aplikasi tidak mencerminkan konten dan pengalaman penggunaan aplikasi Anda dengan cara yang keliru. | |
| Dukungan Pengguna | |||
| Play:Bugs | T-Play:Policies | Bug umum yang dilaporkan pengguna dalam tab Ulasan di halaman Google Play dapat diatasi jika bug tersebut berulang dan terjadi di banyak perangkat berbeda. Jika bug terjadi di beberapa perangkat saja, Anda tetap harus mengatasinya jika perangkat tersebut sangat populer atau baru. | |
Lingkungan pengujian
Siapkan lingkungan pengujian sebagai berikut:
Pengujian emulator: Android Emulator adalah cara yang sangat bagus untuk menguji aplikasi Anda pada berbagai resolusi layar dan versi Android. Siapkan perangkat yang diemulasi (AVD) untuk mewakili kombinasi faktor bentuk dan hardware/software paling umum pada basis pengguna target Anda. Uji berbagai faktor bentuk menggunakan emulator berikut (setidaknya):
- Perangkat foldable: Lipat 7,6 inci dengan layar luar (ini tercantum di bagian ponsel di AVD Manager)
- Tablet: Pixel C 9,94 inci (2.560 x 1.800 piksel)
- Pengujian notifikasi aplikasi seluler: Sambungkan perangkat seluler / emulator dengan emulator Wear OS: Wear OS Round 1,84"
Perangkat hardware: Lingkungan pengujian Anda harus menyertakan sejumlah kecil perangkat hardware sebenarnya yang mewakili kombinasi hardware/software dan faktor bentuk utama yang tersedia bagi konsumen. Anda tidak perlu melakukan pengujian pada setiap perangkat yang ada di pasar. Fokus pada sejumlah kecil perangkat yang mewakilinya, meskipun menggunakan satu atau dua perangkat untuk setiap faktor bentuk.
Lab pengujian perangkat:; Anda juga dapat menggunakan layanan pihak ketiga, seperti Firebase Test Lab, untuk menguji aplikasi pada berbagai perangkat.
Uji dengan Android versi terbaru: Selain menguji Android versi perwakilan untuk basis pengguna target, Anda harus selalu menguji dengan Android versi terbaru untuk memastikan perubahan perilaku terbaru tidak berdampak negatif terhadap pengalaman pengguna aplikasi Anda.
Untuk panduan lebih lanjut tentang pengujian, termasuk pengujian unit, pengujian integrasi, dan pengujian UI, lihat Dasar-dasar pengujian aplikasi Android.
StrictMode
Untuk pengujian performa, aktifkan StrictMode di aplikasi Anda. Gunakan StrictMode untuk menangkap operasi yang dapat memengaruhi performa, akses jaringan, serta pembacaan dan penulisan file. Cari operasi yang berpotensi bermasalah, baik di thread utama maupun di thread lain.
Siapkan kebijakan pemantauan per thread menggunakan StrictMode.ThreadPolicy.Builder dan aktifkan semua pemantauan yang didukung di
ThreadPolicy menggunakan detectAll().
Aktifkan notifikasi visual pelanggaran kebijakan untuk ThreadPolicy menggunakan
penaltyFlashScreen().
Pengujian
Pengujian kualitas aplikasi inti membantu Anda menilai kualitas dasar aplikasi Anda. Anda dapat menggabungkan pengujian atau mengintegrasikan grup pengujian dalam rencana pengujian Anda.
Pengalaman pengguna
| ID | Fitur | Deskripsi |
|---|---|---|
| Kegunaan | ||
| Kegunaan T:Inti | Kegunaan:UX |
Buka semua bagian aplikasi—semua layar, dialog, setelan, dan alur penggunaan. Lakukan hal berikut:
|
| T-Usability:Switcher | Kegunaan:Pengganti | Dari setiap layar aplikasi, beralihlah ke aplikasi lain yang sedang berjalan, lalu kembali ke aplikasi yang sedang diuji menggunakan pengalih aplikasi Terbaru. |
| Kegunaan T:Tidur | Kegunaan:Tidur | Tekan tombol daya untuk mengalihkan perangkat ke mode tidur, lalu tekan lagi tombol daya untuk mengaktifkan layar. |
| T-Usability:Lock | Kegunaan:Lock | Siapkan kunci layar di perangkat. Tekan tombol daya untuk mengalihkan perangkat ke mode tidur (yang mengunci perangkat). Lalu, tekan lagi tombol daya untuk mengaktifkan layar dan membuka kunci perangkat. |
| Kartu SD | ||
| T-SD-Card | Kegunaan:UX |
Lakukan pengujian fungsi inti dengan aplikasi yang diinstal di kartu SD perangkat (jika aplikasi mendukung metode penginstalan ini). Untuk memindahkan aplikasi ke kartu SD, lihat Setelan aplikasi. |
| Antarmuka pengguna | ||
| T-UI:Transisi | UI:Paritas, UI:Layar Penuh, UI:Transisi |
Dari setiap layar aplikasi, putar perangkat antara orientasi lanskap dan potret, serta status terlipat dan terbentang setidaknya tiga kali. Pastikan aplikasi melakukan hal berikut:
|
| Kualitas visual | ||
| T-Visual:Display | Visual:Display | Gunakan semua fitur atau aplikasi Anda. Verifikasi bahwa semua visual, termasuk grafis, teks, gambar, dan elemen UI lainnya bebas dari distorsi, blur, atau pikselasi. |
| T-Visual:Keterbacaan | Visual:Keterbacaan |
Tinjau semua blok teks di aplikasi. Pastikan panjang baris teks dan blok teks dibatasi hingga 45-75 karakter (termasuk spasi) agar mudah dibaca. Verifikasi hal berikut:
|
| T-Visual:Tema | Visual:Tema | Pastikan semua teks dapat dibaca dalam tema terang dan gelap. Pastikan semua visual dapat dibedakan dengan jelas dan estetis dalam tema terang dan gelap. |
| Navigasi | ||
| T-Nav:Back | Nav:BackButton, Nav:BackGesture |
Buka semua bagian aplikasi—semua layar, dialog, setelan, dan alur penggunaan. Dari setiap layar aplikasi, tekan tombol Kembali atau gunakan gestur geser ke belakang. Aplikasi akan membuka layar sebelumnya atau layar utama. |
| T-Nav:State | Nav:State | Dari setiap layar aplikasi, tekan tombol Beranda perangkat atau geser ke atas di navigasi gestur, lalu luncurkan kembali aplikasi dari layar Semua Aplikasi. |
| Notifikasi | ||
| T-Notify:Info | Notify:Info, Notify:Messaging |
Picu dan amati semua jenis notifikasi yang dapat ditampilkan aplikasi di panel samping notifikasi. Perluas notifikasi jika ada (Android 4.1 dan yang lebih baru), lalu ketuk semua tindakan yang tersedia. |
| Aksesibilitas | ||
| T-Access:Target | Akses:Target | Pastikan target sentuh mempertahankan ukuran dan posisi yang konsisten dan dapat diakses untuk semua ukuran dan konfigurasi tampilan. Untuk mengetahui informasi tentang aksesibilitas, lihat Accessibility Scanner. |
| T-Access:Kontras | Akses:Kontras | Verifikasi kontras semua elemen visual. |
| T-Access:Deskripsi | Akses:Deskripsi | Pastikan semua elemen UI selain TextView memiliki deskripsi konten. |
Fungsi
| ID | Fitur | Deskripsi |
|---|---|---|
| Audio | ||
| T-Audio:Init | Audio:Init | Mulai pemutaran audio. Pastikan dalam waktu satu detik, aplikasi mulai memutar audio atau memberikan indikator visual bahwa data audio sedang disiapkan untuk pemutaran. |
| T-Audio:Focus | Audio:Fokus | Mulai pemutaran audio. Aplikasi harus meminta fokus audio. Saat pemutaran audio berhenti, aplikasi harus melepaskan fokus audio (yang terjadi secara otomatis untuk aplikasi yang menargetkan Android 12 (level API 31) dan yang lebih tinggi). |
| T-Audio:Interrupt | Audio:Interrupt | Mulai pemutaran audio. Mulai pemutaran audio di aplikasi lain. Aplikasi Anda harus merespons perubahan fokus audio dan menghentikan pemutaran audio atau mengurangi volume pemutaran. |
| T-Audio:Background | Audio:Latar belakang | Mulai pemutaran audio. Berinteraksi dengan aplikasi non-audio lain sebagai aplikasi latar depan. Aplikasi harus terus memutar audio di latar belakang. |
| T-Audio:Notification | Audio:Notifikasi | Mulai pemutaran audio. Berinteraksi dengan aplikasi non-audio lain sebagai aplikasi latar depan. Pastikan aplikasi Anda terus memutar audio di latar belakang dan telah membuat notifikasi dengan gaya MediaStyle. Lihat Bekerja dengan baik dengan kontrol media. |
| T-Audio:Resume | Audio:Lanjutkan | Mulai pemutaran audio. Berinteraksi dengan aplikasi non-audio lain sebagai aplikasi latar depan. Berinteraksi dengan aplikasi Anda untuk menjadikannya aplikasi teratas. Audio akan dilanjutkan atau volume akan dipulihkan. Jika tidak, aplikasi harus menunjukkan kepada pengguna bahwa pemutaran dijeda. |
| T-Video:PiP | Video:PiP | Mengaktifkan pemutaran video aplikasi dalam mode picture-in-picture. |
| T-Video:Encoding | Video:Encoding | Verifikasi bahwa aplikasi mengenkode video menggunakan standar kompresi video HEVC. |
| Berbagi | ||
| Berbagi:Sheet | Buat intent dan mulai aktivitas dengan memanggil startActivity() dengan intent sebagai argumen. Lihat Menggunakan Android Sharesheet. Aplikasi Anda harus menampilkan Android Sharesheet. |
|
| Layanan latar belakang | ||
| CR-6 | Latar belakang:Layanan | Gunakan semua fitur utama aplikasi Anda. Pastikan tidak ada layanan latar belakang yang berjalan lama yang dimulai. Beralihlah ke aplikasi lain untuk mengirimkan aplikasi Anda ke latar belakang. Buka Setelan, lalu periksa apakah aplikasi Anda masih memiliki layanan yang sedang berjalan saat di latar belakang. Di Android 4.0 dan yang lebih baru, buka layar Aplikasi, lalu temukan aplikasi tersebut di tab Berjalan. |
Performa dan stabilitas
| ID | Fitur | Deskripsi |
|---|---|---|
| Performa | ||
| T- Performance:Startup | Performa:Startup | Mulai aplikasi Anda. Pastikan aplikasi dimuat dengan cepat atau memberikan indikator progres atau tanda serupa jika aplikasi perlu waktu lebih dari dua detik untuk dimuat. |
| T-Performance:FPS | Performa:FPS | Gunakan semua fitur utama aplikasi Anda. Pastikan aplikasi merender minimal 60 frame per detik. Gunakan opsi Rendering HWUI profil untuk membantu menguji aplikasi Anda. |
| T-Performance:Strict | Performa:Strict |
Aktifkan Perhatikan pembersihan sampah memori dan dampaknya terhadap pengalaman pengguna dengan cermat. |
| Stabilitas | ||
| T-Stability:ANR | Stabilitas:ANR | Gunakan semua fitur utama aplikasi Anda. Pastikan aplikasi tidak error atau memblokir UI thread yang menyebabkan error ANR (Android Tidak Merespons). Tinjau laporan pra-peluncuran Google Play untuk mengidentifikasi potensi masalah stabilitas. |
| SDK | ||
| T-SDK:Platform | SDK:Platform | Jalankan aplikasi Anda di platform Android versi publik terbaru. Gunakan semua fitur utama. Pastikan aplikasi tidak error dan berjalan tanpa kehilangan fungsi inti. |
| T-SDK:Terbaru | SDK:Target, SDK:Compile |
Tinjau file manifes Android dan konfigurasi build untuk memastikan aplikasi dibuat menggunakan SDK terbaru yang tersedia (targetSdk dan compileSdk). |
| T-SDK:3P | SDK:3P | Tinjau file build.gradle aplikasi Anda untuk mengetahui dependensi yang sudah tidak berlaku. |
| T-SDK:Non | SDK:Non | Gunakan alat lint Android Studio untuk mendeteksi penggunaan antarmuka non-SDK. Lihat Pembatasan pada antarmuka non-SDK untuk metode pengujian alternatif. |
| T-SDK:Debug | SDK:Debug | Tinjau file build.gradle aplikasi Anda untuk mengetahui apakah ada library debug yang disertakan. |
| Baterai | ||
| T-Battery:Manage | Baterai:Kelola |
Gunakan semua fitur utama aplikasi dalam mode Istirahatkan dan Aplikasi Standby. Pastikan alarm, timer, notifikasi, dan sinkronisasi berfungsi dengan baik di masa pemeliharaan mode Istirahatkan dan saat aplikasi keluar dari mode Aplikasi Standby. Uji perilaku fitur Istirahatkan dan Aplikasi Standby menggunakan perintah ADB (lihat Menguji dengan Fitur Istirahatkan dan Aplikasi Standby untuk mengetahui persyaratan dan panduan). Untuk mendiagnosis pengurasan baterai yang tidak terduga, gunakan Power Profiler Android Studio atau alat Battery Historian yang dikombinasikan dengan pekerjaan latar belakang yang direncanakan. |
Privasi dan keamanan
| ID | Fitur | Deskripsi |
|---|---|---|
| Izin | ||
| T-Permissions:Min | Izin:Min | Tinjau semua izin yang diperlukan aplikasi Anda, dalam file manifes, saat runtime, dan di setelan aplikasi di perangkat (Setelan > Info Aplikasi). |
| T-Permissions:Sensitive | Izin:Sensitif | Gunakan fitur aplikasi Anda yang meminta izin. Pastikan aplikasi meminta izin untuk mengakses data atau layanan sensitif hanya untuk kasus penggunaan inti aplikasi. Pastikan implikasi pemberian izin ke data dan layanan sensitif dikomunikasikan dengan jelas kepada pengguna. |
| T-Permissions:Runtime | Izin:Runtime | Gunakan semua fitur aplikasi Anda yang memerlukan izin. Pastikan izin diminta secara lambat, yaitu hanya saat fitur diakses, bukan selama pengaktifan aplikasi. |
| T-Permissions:Explain | Izin:Explain | Gunakan semua fitur aplikasi Anda yang memerlukan izin. Pastikan aplikasi menjelaskan kepada pengguna alasan izin diperlukan. |
| T-Permissions:Degrade | Izin:Turunkan | Gunakan semua fitur aplikasi Anda yang memerlukan izin. Menolak atau mencabut izin. Pastikan aplikasi menyediakan kasus penggunaan alternatif dan terus berfungsi. |
| Data dan file | ||
| T-Data:Sensitive | Data:Sensitive | Tinjau semua data yang disimpan dalam penyimpanan internal. Pastikan bahwa data yang disimpan secara eksternal bukan data sensitif. |
| T-Data:Penanganan | Data:Sensitive | Tinjau cara data yang dimuat dari penyimpanan eksternal ditangani dan diproses. |
| T-Data:Log | Data:Log | Gunakan semua fitur aplikasi utama sambil memantau log perangkat. Pastikan tidak ada informasi pengguna pribadi yang dicatat. |
| T-Data:IDs | Data:ID | Gunakan semua fitur utama aplikasi. Verifikasi bahwa aplikasi tidak menggunakan ID hardware apa pun seperti IMEI untuk tujuan identifikasi. |
| Identitas | ||
| T-Identity:Hints | Identity:Hints | Gunakan semua fitur aplikasi yang memerlukan input pengguna. Verifikasi bahwa aplikasi memberikan petunjuk untuk mengisi otomatis kolom input untuk data seperti kredensial akun dan informasi sensitif lainnya. |
| T-Identity:CredMan | Identity:CredMan | Login ke aplikasi Anda. Verifikasi bahwa aplikasi mengintegrasikan Credential Manager untuk Android untuk pengalaman login yang menyatukan dukungan untuk kunci sandi, identitas gabungan, dan sandi. |
| T-Identity:Bio | Identity:Bio | Gunakan semua fitur aplikasi yang memerlukan autentikasi. Pastikan aplikasi melindungi transaksi keuangan atau informasi sensitif, seperti dokumen pengguna yang penting, dengan autentikasi biometrik. |
| Komponen Aplikasi | ||
| T-Components:Export | Komponen:Ekspor | Tinjau semua komponen aplikasi yang ditentukan dalam file manifes Android untuk status ekspor yang sesuai. Properti yang diekspor harus ditetapkan secara eksplisit untuk semua komponen. |
| T-Components:Permissions | Komponen:Izin | Tinjau semua izin yang diperlukan aplikasi Anda, dalam file manifes, saat runtime, dan di setelan aplikasi di perangkat (Setelan > Info Aplikasi). |
| T-Components:Protection | Komponen:Perlindungan | Tinjau semua penyedia konten yang ditentukan dalam file manifes Android. Pastikan setiap penyedia memiliki protectionLevel yang sesuai. |
| Jaringan | ||
| T-Network:Traffic | Network:Traffic | Deklarasikan konfigurasi keamanan jaringan yang menonaktifkan traffic cleartext, lalu uji aplikasi. |
| T-Network:Config | Network:Config | Tinjau konfigurasi keamanan jaringan aplikasi. Pastikan tidak ada pemeriksaan lint saat terjadi kegagalan konfigurasi. |
| T-Network:Play | Jaringan:Play | Pastikan penyedia keamanan diinisialisasi saat aplikasi dimulai untuk layanan Google Play. |
| WebView | ||
| T-WebViews:Config | WebViews:Config | Tinjau konfigurasi keamanan jaringan aplikasi. Pastikan tidak ada pemeriksaan lint saat terjadi kegagalan konfigurasi. |
| T-WebView:JavaScript | WebView:JavaScript | Untuk setiap WebView, buka halaman yang memerlukan JavaScript. |
| T-WebView:Nav | WebViews:Config, WebViews:JavaScript |
Di setiap WebView, coba buka situs dan konten yang tidak dimuat langsung oleh aplikasi Anda. |
| Eksekusi | ||
| T-Execution:Bundles | Eksekusi:Bundle | Verifikasi bahwa aplikasi menggunakan Android App Bundle dan tidak memuat kode secara dinamis dari luar APK aplikasi. |
| Kriptografi | ||
| T-Crypto:Algoritma | Crypto:Algorithms | Pastikan aplikasi menggunakan algoritma kriptografi dan generator angka acak yang kuat yang disediakan platform. Pastikan juga bahwa aplikasi tidak menerapkan algoritma khusus. |
Google Play
| ID | Fitur | Deskripsi |
|---|---|---|
| Kebijakan | ||
| T-Play:Kebijakan | Play:Kebijakan, Play:Kematangan, Play:Bug |
Login ke Konsol Google Play untuk meninjau profil developer, deskripsi aplikasi, screenshot, gambar fitur, rating konten, dan masukan pengguna Anda. |
| Halaman detail aplikasi | ||
| T-Play:Grafis | Play:Graphics | Download gambar fitur dan screenshot, lalu perkecil skalanya agar sesuai dengan ukuran layar perangkat dan faktor bentuk yang Anda targetkan. |
| T-Play:Aset | Play:Grafis, Play:NonAndroid, Play:Menyesatkan |
Tinjau semua aset visual, media, teks, library kode, dan konten lainnya yang dipaketkan dalam download aplikasi atau file ekspansi. |
Mengarsipkan
Versi sebelumnya dari pedoman kualitas aplikasi inti: