Zipalign ne anlama geliyor ve Android cihazlarımızı nasıl kullandığımıza nasıl uyuyor?


19

"Zipalign" ne anlama geliyor ve önemi nedir?

Bir ROM "zipaligned" olduğunu iddia ettiğinde bu ne anlama geliyor ve "zipaligned" olmayan bir ROM'dan ne anlama geliyor?

Yanıtlar:


21

Bu mekanizma Android geliştiricileri sitesinde şu şekilde açıklanmaktadır:

zipalign, Android uygulama (.apk) dosyalarına önemli optimizasyon sağlayan bir arşiv hizalama aracıdır. Amaç, sıkıştırılmamış tüm verilerin dosyanın başlangıcına göre belirli bir hizalamayla başlamasını sağlamaktır. Özellikle, .apk içindeki görüntüler veya ham dosyalar gibi tüm sıkıştırılmamış verilerin 4 baytlık sınırlarda hizalanmasına neden olur. Bu, hizalama kısıtlamaları olan ikili veriler içeriyor olsalar bile tüm bölümlere doğrudan mmap () ile erişilmesini sağlar. Avantajı, uygulamayı çalıştırırken tüketilen RAM miktarında bir azalmadır.

Kısacası: .apkpaketlenmiş dosya içindeki verilerin sırası nedeniyle içeriğe daha kolay / daha hızlı / daha optimum erişim sağlanabilir.

Daha derin bilgi için, AddictiveTips'te "tam bir kılavuz" bulunmaktadır: Android'de Zipalign Nedir ve Sorunuzun ikinci bölümünü yanıtlayan Uygulamaları Nasıl Zipaligned Yapabilirsiniz :

Oldukça anlaşılır bir şekilde, durum huzursuz başvuru paketleri için saklı tutulacaktır. Kaynak okuma yavaş ve bellek kullanımı spektrumun üst ucunda olacaktır. Ayrıca kaç tane hizalanmamış uygulamanın mevcut olduğuna da bağlı olacaktır. Örneğin, hizalanmamış bir ev uygulamasına sahip daha az sayıda uygulama varsa, daha yavaş uygulama başlatma süreleri görürsünüz. Bu en iyi senaryo. En kötü durum senaryosu için, birkaç hizalanmamış uygulamaya sahip olmak, sistemin süreçleri tekrar tekrar başlatmasına ve öldürmesine, gecikmelerle ve büyük pil tüketimiyle mücadele etmesine neden olacaktır.


Programcılar için aşağı yukarı C'deki yapısal hizalamaya benzer. struct x { uint16_t id; uint32_t data[100]; };32-bit hizalanmasını istiyorsanız yapmayın ; kullanımıstruct x { uint16_t id; uint16_t padding; uint32_t data[100]; };
Matthew 16

Herhangi bir dezavantajı yok gibi görünüyor neden tüm uygulamalar zip uyumlu değil? Ayrıca bu son kullanıcılar için gerçekten endişe verici mi, yoksa yalnızca geliştiricilerle mi ilgili?
Matt

1
Söyleyeceğim geliştirici için ek bir adım. Ve tabii ki performans son kullanıcılar için bir endişe;)
Izzy

1

Zipalign'ın tam olarak nasıl çalıştığını yukarıya eklemek için -

Android işletim ortamında, her uygulama paketinde depolanan veri dosyalarına birden çok işlemle erişilir; örneğin, yükleyici ilişkili izinleri belirlemek için veri bildirimini okuyacaktır; sistem sunucusu bu kaynakları bildirim görüntülemek gibi birçok nedenden dolayı okuyabilir; Örneğin, Ev uygulaması, uygulamanın adını ve simgesini almak için kaynakları okuyacaktır. Android gerçek bir çoklu görev işletim altyapısına dayandığından, bu dosyalara sürekli ve tekrar tekrar erişilir. Son olarak, fakat en önemlisi, uygulamanın kendisi manifest verilerini okur.

Android Linux tabanlı olduğu için bellek haritalama, süreçlerin verimli bir şekilde ele alınmasında önemli bir rol oynar. Esasen, Android işletim sisteminin kaynak işleme kodu için en uygun hizalama 4 baytlık sınırlardır. Bunun anlamı, APK'ların 4 baytlık sınırlara bellekle eşlenmesi ve buna göre hizalanması durumunda, işletim sisteminin istenen veri manifestine ulaşmak için tüm uygulama paketini 'okuması' gerekmeyeceğidir. Her sistem süreci, istenen kaynakları nerede arayacağınızı önceden bilecek ve bu nedenle çok daha sorunsuz ve daha hızlı çalışacaktır.

Özetle, bir APK'yı zipalign etmek, paket içindeki tüm sıkıştırılmamış verilerin 4 baytlık sınırlarda hizalanmasına ve tüm bölümlerin doğrudan bellek haritasına erişilmesine izin verir. Sorgulama kodunun tüm uygulama paketini okuması gerekmediğinden, yürütme sırasında RAM tüketimi azalır.

Kaynak


Neden tüm uygulama paketini okumuyor? Manifestlerin belirli bir ofsette olması garanti ediliyor mu?
Kenneth Worden
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.