Android uygulamaları Java programlama dili ile yazılır.
Android için yazılan kodlar program için gerekli veri ve kaynak (resource) dosyaları ile derlenerek .apk uzantılı Android paket dosyalarına kaydedilir.
.apk uzantılı dosyalar tek bir uygulama ile ilgili tüm dosyaları içerir ve Android işletim sistemiyle çalışan cihazlarda uygulamanın kurulumunu yapmak için kullanılır.
Bir cihazda kurulduktan sonra, her Android uygulaması kendisine ait güvenlik ortamında çalışır:
Android işletim sistemi, her uygulamanın farklı bir kullanıcı olarak kabul edildiği çok kullanıcılı bir Linux sistemidir.
Ön tanımlı olarak, sistem her uygulamaya özgün bir Linux kullanıcı ID tahsis eder. Bu ID sadece sistem tarafından kullanılır uygulama tarafından bilinmez. Sistem uygulamadaki tüm dosyalar için erişim izinlerini ayarlar. Böylece, sadece uygulamaya tahsis edilen kullanıcı ID uygulama dosyalarına erişim sağlayabilir.
Her process'in kendine ait bir sanal makinesi (virtual machine - VM) olduğundan, uygulamanın kodu diğer uygulamalardan ayrı olarak çalışır. Bu olayı, aynı bilgisayar içinde oluşturulmuş müstakil bilgisayarlar olarak düşünebilirsiniz.
Ön tanımlı olarak, her uygulama kendine ait Linux process ortamında çalışır. Herhangi bir uygulamanın bileşeni çalıştırılması gerektiğinde, Android işletim sistemi process'i başlatır, sonra ihtiyaç kalmadığında veya sistem diğer uygulamalar için belleğe ihtiyaç duyulduğunda, process'i sona erdirir.
Process bir bilgisayar programının çalışmakta olan ve bellekte yer alan tek bir halini ifade eder.
Android sistemi en düşük ayrıcalık prensibini uygular. Ön tanımlı olarak, her uygulama sadece ihtiyaç duyduğu kadar bileşene erişim sağlayabilir. Böylece, çok güvenli bir ortam elde edildiğinden, uygulamalar izin verilmeyen sistem elemanlarına erişim sağlayamaz.
Bununla beraber, uygulamaların diğer uygulamalarla veri paylaşması ve sistem hizmetlerine erişim için bazı yöntemler vardır:
İki uygulamanın aynı Linux kullanıcı ID'sini kullanmasını sağlayabilirsiniz. Bu durumda, iki uygulama birbirlerinin dosyalarına erişim sağlayabilir. Sistem kaynaklarını korumak için, aynı Linux kullanıcı ID'sine sahip uygulamalar aynı Linux process ortamında çalışacak şekilde ve aynı VM'yi kullanacak şekilde düzenlenebilir (uygulamalar aynı sertifika ile işaretlennmelidir).
Bir uygulama, kullanıcı irtibat bilgsi, SMS mesajlar, SD kart, kamera, Bluetooth gibi verilere erişim için yetki talep edebilir. Bütün uygulama izinleri kurulum anında kullanıcı tarafından verilmelidir.