Aplikasi Android dapat ditulis menggunakan bahasa Kotlin, Java, dan C++. Fitur Android SDK mengompilasi kode Anda bersama data dan file resource menjadi sebuah APK: sebuah paket Android, yang berupa file arsip dengan akhiran .apk. Satu file APK berisi semua konten aplikasi Android dan merupakan file yang digunakan perangkat Android untuk menginstal aplikasi.
Setiap aplikasi Android berada dalam sandbox keamanannya sendiri, yang dilindungi dengan fitur keamanan Android berikut:
- Sistem operasi Android merupakan sistem Linux multi-pengguna yang di dalamnya setiap aplikasi adalah pengguna berbeda.
- Secara default, sistem menetapkan ID pengguna Linux unik kepada setiap aplikasi (ID ini hanya digunakan oleh sistem dan tidak diketahui aplikasi). Sistem menetapkan izin bagi semua file dalam aplikasi sehingga hanya ID pengguna yang diizinkan yang bisa mengaksesnya.
- Setiap proses memiliki mesin virtual (VM) sendiri, sehingga kode aplikasi berjalan secara terisolasi dari aplikasi lainnya.
- Secara default, setiap aplikasi berjalan dalam proses Linux-nya sendiri. Sistem Android memulai proses bila ada komponen aplikasi yang perlu dijalankan, lalu mematikan proses bila tidak lagi diperlukan atau bila sistem harus memulihkan memori untuk digunakan aplikasi lain.
Sistem Android mengimplementasikan prinsip privilese minim. Ini berarti, secara default aplikasi hanya memiliki akses ke komponen yang diperlukannya untuk melakukan pekerjaannya dan tidak lebih dari itu. Hal ini menghasilkan lingkungan yang sangat aman sehingga aplikasi tidak bisa mengakses bagian sistem bila tidak diberi izin. Akan tetapi, ada beberapa cara bagi aplikasi untuk berbagi data dengan aplikasi lain dan bagi aplikasi untuk mengakses layanan sistem:
- Dua aplikasi bisa diatur untuk menggunakan ID pengguna Linux yang sama, dalam hal ini keduanya bisa saling mengakses file masing-masing. Untuk menghemat sumber daya sistem, aplikasi dengan ID pengguna yang sama juga bisa diatur agar berjalan dalam proses Linux yang sama dan menggunakan VM yang sama. Aplikasi tersebut juga harus ditandatangani dengan sertifikat yang sama
- Aplikasi bisa meminta izin akses ke data perangkat seperti kontak pengguna, pesan SMS, penyimpanan lepas-pasang (kartu SD), kamera, dan Bluetooth. Pengguna secara eksplisit harus memberikan izin ini. Untuk informasi selengkapnya, lihat Bekerja dengan Izin Sistem.
Bagian selanjutnya dari dokumen ini memperkenalkan konsep berikut:
- Komponen kerangka kerja inti yang mendefinisikan aplikasi.
- File manifes tempat Anda mendeklarasikan komponen dan fitur yang diperlukan perangkat untuk aplikasi.
- Sumber daya yang terpisah dari kode aplikasi dan memungkinkan aplikasi mengoptimalkan perilakunya untuk beragam konfigurasi perangkat.
Komponen aplikasi
Komponen aplikasi adalah blok pembangun penting dari aplikasi Android. Setiap komponen adalah titik masuk tempat sistem atau pengguna dapat memasuki aplikasi Anda. Beberapa komponen bergantung pada komponen lainnya.
Aktivitas
Aktivitas adalah titik masuk untuk berinteraksi dengan pengguna. Ini mewakili satu layar dengan antarmuka pengguna. Aktivitas mempermudah interaksi penting berikut di antara sistem dan aplikasi:
- Tetap memantau apa yang penting bagi pengguna saat ini (apa yang ada di layar) untuk memastikan bahwa sistem tetap menjalankan proses yang menjadi host aktivitas.
- Memahami proses yang digunakan sebelumnya berisi sesuatu yang dapat dikembalikan pengguna (aktivitas yang dihentikan), jadi lebih memprioritaskan mempertahankan proses tersebut.
- Membantu menangani aplikasi menghentikan prosesnya sehingga pengguna dapat kembali ke aktivitas dengan status sebelumnya yang dipulihkan.
- Memberikan cara bagi aplikasi untuk menerapkan alur antar pengguna, dan bagi sistem untuk mengoordinasikan alur ini. (Contoh yang paling klasik sedang dibagikan di sini).
Anda menerapkan aktivitas sebagai subclass dari class Activity. Untuk informasi selengkapnya tentang class Activity, lihat panduan developer Aktivitas.
Layanan
Layanan adalah titik masuk serbaguna untuk menjaga aplikasi tetap berjalan di latar belakang bagi semua jenis alasan. Ini adalah komponen yang berjalan di latar belakang untuk melakukan operasi yang berjalan lama atau untuk melakukan pekerjaan bagi proses jarak jauh.. Menyinkronkan data di latar belakang atau memutar musik juga mewakili dua jenis layanan dimulai yang berbeda, yang memodifikasi bagaimana sistem menanganinya:
- Pemutaran musik adalah sesuatu yang disadari secara langsung oleh pengguna, jadi aplikasi tersebut memberi tahu sistem dengan mengatakan ingin berjalan di latar depan dengan notifikasi untuk memberi tahu pengguna tentang hal ini; dalam kasus ini sistem memahami bahwa harus benar-benar berusaha keras untuk menjaga proses layanan itu tetap berjalan, karena pengguna akan merasa tidak senang jika layanan itu hilang.
- Layanan latar belakang regular bukanlah sesuatu yang disadari pengguna secara langsung sebagai layanan yang berjalan, jadi sistem tersebut memiliki kebebasan lebih dalam mengelola prosesnya. Layanan ini mungkin diperbolehkan untuk dimatikan (lalu memulai ulang nanti) jika layanan ini memerlukan RAM untuk hal yang lebih penting bagi pengguna.