Android neden yüklü uygulamaların APK dosyalarını saklıyor?


31

Android, yüklü kullanıcı uygulamalarının APK dosyalarını /data/appdizinde ve sistem uygulamalarını /system/appdizinde tutar.

Uygulamanın her başlatılışında Android'in APK dosyalarındaki deks dosyalarını çıkardığı anlamına mı geliyor? Değilse, APK dosyalarını güvenle silebilir ve uygulamayı çalıştırabilir miyim?

Yanıtlar:


43

Bir Android APK genellikle bu şeyleri içerir.

assets/
lib/
META-INF/
res/
AndroidManifest.xml
classes.dex

Kurulumun ardından, APK dosyası kopyalanır /data/appve üzerine classes.dexçıkarılarak çıkarılır ve "optimize edilir" dex2oat(Android 5+ sürümünde lib/de çıkarılır). Optimizasyonun sonucu, /data/dalvik-cache/bir uygulamanın kurulum veya güncelleme başına sadece bir kez optimize edilmesi gereken şekilde depolanır . Diğer her şey APK içinde tutulur. İlk cevap çok açıktır Yani: gibi şeyler assetsve resbu uygulama sağlanmalıdır gerektirdiği, ve onlar APK içinde. APK dosyası destek amaçlı tutulur. Bir APK silerseniz, uygulama kesinlikle hiç başlamaz. (Uygulama: Mal varlığım nerede?)

İkincisi, Google Play çok uzun zaman önce "Delta Güncellemesi" için destek ekledi . Delta güncelleme işleminde eski paket ile yeni paket arasındaki fark hesaplanır. Daha sonra GP "Delta" yı indirir ve güncellenmiş APK'yi elde etmek için orijinal APK'ye değişiklikler uygular, böylece indirme boyutunu küçültür.

Bir APK her zaman imzalanır. Bu, pakette kötü amaçlı değişiklik yapılmasını önleyebilir. Neyin değiştiğini veya bir virüsün enjekte edilip edilmediğini bilmeden, kesinlikle modded bir uygulama yüklemek istemezsiniz. META-INF/İçeride APK bu amaçla çalışıyor. Resmi olmayan değişiklikler eşleşmeyen imza ile sonuçlanacaktır ve Android sistemi modded uygulamayı yüklemeyi reddedecektir.

Ayrıca, Android işletim sisteminizi güncellediğinizde tüm dex dosyaları tekrar "en iyi duruma getirilir", böylece onları birer birer yeniden kurmanıza gerek kalmaz. Yukarıda belirtildiği gibi, optimizasyon classes.dexorijinal paketinden dosya gerektirir .


5
Google Play Store’un delta güncelleme yeteneklerinin, APK’nin yüklü ve güncellenmiş sürümlerle deltaları ve sonraki düzeltme eklerini hesaplamak için APK’ya sahip olduğuna bağlıdır. Ayrıca, APK sıkıştırıldıkça biraz yer kazanıyor (ZipAlign'i hatırlayan biri var mı?)
Tamoghna Chowdhury

@Tamoghna Space gerçekten bir sorun değil, aksi takdirde Android 5+ APK'dan çıkarmazdı lib/, iOS IPA'dan her şeyi çıkarmazdı. Sadece temel bütünlük kontrolü için.
iBug

Yürütülebilir dosyalar nadiren iyi sıkıştırılır - yer tasarrufu, daha fazla çıkarılmamış, ikili XML dosyaları gibi sıkıştırılmış kaynaklarla ilgilidir. Ayrıca, bu ZipAlign - kaynak erişimi, optimize edilmiş (kelime hizalanmış) sıkıştırılmış dosyalarda biraz daha hızlı olabilir.
Tamoghna Chowdhury

1
Yani html ve js dosyaları gibi varlık dosyaları apk'den android dosya sisteminde belirli bir yere kopyalanmıyor mu?
user1788736

1
@ user1788736 Evet. APK'de kaldılar.
iBug
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.