Android Studio, derleme işlemi tamamlandıktan sonra APK'nızın veya Android App Bundle'ınızın yapısıyla ilgili anında bilgi sağlayan bir APK Analiz Aracı içerir.
APK Analiz Aracı'nı kullanmak, uygulamanızdaki DEX dosyaları ve kaynaklarıyla ilgili hata ayıklama sorunlarında harcadığınız zamanı kısaltabilir ve APK boyutunu küçültmenize yardımcı olabilir. APK Analiz Aracı'na apkanalyzer
ile komut satırından da erişebilirsiniz.
APK Analiz Aracı ile şunları yapabilirsiniz:
- Uygulamadaki DEX ve Android kaynak dosyaları gibi dosyaların mutlak ve göreli boyutunu görüntüleyin.
- DEX dosyalarının bileşimini anlama.
- Uygulamadaki dosyaların son sürümlerini (ör.
AndroidManifest.xml
dosyası) hızlıca görüntüleyebilirsiniz. - İki APK veya uygulama paketini yan yana karşılaştırın.
Bir proje açıkken APK Analiz Aracı'na erişmenin üç yolu vardır:
- Bir APK'yı veya uygulama paketini Android Studio'nun Düzenleyici penceresine sürükleyin.
- Proje penceresinde Proje görünümüne geçin ve varsayılan
build/output/apks/
dizininde APK'yı çift tıklayın. - Menü çubuğunda Derleme > APK'yı analiz et'i ve ardından APK'nızı veya uygulama paketinizi seçin.
Dosya ve boyut bilgilerini görüntüleme
APK'lar, ZIP dosya biçimine uyan dosyalardır. APK Analiz Aracı, her bir dosyayı veya klasörü, klasörlere gitmek için genişletebileceğiniz bir varlık olarak görüntüler. Varlıkların hiyerarşisi, APK dosyasındaki dosyaların ve klasörlerin yapısını yansıtır.
APK Analiz Aracı, Şekil 1'de gösterildiği gibi her bir varlık için ham dosya boyutunu ve indirme dosya boyutu değerlerini gösterir. Ham Dosya Boyutu, diskteki varlığın sıkıştırılmamış boyutunu temsil eder. İndirme Boyutu, varlığın Google Play tarafından yayınlanacak tahmini sıkıştırılmış boyutunu temsil eder. Toplam İndirme Boyutu Yüzdesi, APK'nın temsil ettiği toplam indirme boyutunun yüzdesini belirtir.

AndroidManifest.xml dosyasını görüntüleyin
Projeniz ürün aromaları gibi birden fazla AndroidManifest.xml
dosyası içeriyorsa veya manifest dosyası da sağlayan kitaplıklar içeriyorsa bunlar uygulamanızdaki tek bir dosyada birleştirilir. Bu manifest dosyası, normalde APK veya uygulama paketi içindeki ikili bir dosyadır ancak APK Analiz Aracı'nda seçildiğinde bu öğenin XML biçimi yeniden oluşturulur ve sunulur.
Bu görüntüleyici, derleme sırasında uygulamanızda yapılmış olabilecek
değişiklikleri anlamanıza yardımcı olur. Örneğin, uygulamanızın bağlı olduğu bir kitaplıktaki AndroidManifest.xml
dosyasının nihai AndroidManifest.xml
dosyasıyla nasıl birleştirildiğini görebilirsiniz.
Ayrıca, bu görüntüleyici bazı hata analizi özellikleri sunar. Uyarılar veya hatalar sağ üst köşede gösterilir. Şekil 2'de seçilen manifest dosyası için bildirilen bir hata gösterilmektedir.

DEX dosyalarını göster
APK Analiz Aracı'nın DEX dosyası görüntüleyicisi, uygulamanızdaki DEX dosyalarındaki temel bilgilere anında erişmenizi sağlar. Görüntüleyen, sınıf, paket, toplam referans ve bildirim sayılarını sağlar. Bunlar, multidex kullanıp kullanmayacağınıza veya 64K DEX sınırının altına inmek için bağımlılıkları nasıl kaldıracağınıza karar vermenize yardımcı olabilir.
Şekil 3'te 64.000 DEX sınırının altında olan orta boyutlu bir uygulama gösterilmektedir. DEX dosyasındaki her paket, sınıf ve yöntemin, Tanımlanan Yöntemler ve Referans Verilen Yöntemler sütunlarında listelenen sayıları vardır.
Referans Verilen Yöntemler sütunu, DEX dosyasının başvuruda bulunduğu tüm yöntemleri sayar. Buna genellikle kodunuzda tanımlanan yöntemler, bağımlılık kitaplıklarınız ve kodun kullandığı standart Java ve Android paketlerinde tanımlanan yöntemler dahildir. Bunlar, her DEX dosyasında 64K yöntem sınırında sayılan yöntemlerdir.
Tanımlanan Yöntemler sütunu yalnızca DEX dosyalarınızın birinde tanımlanan yöntemleri sayar. Dolayısıyla bu sayı Referans Verilen Yöntemler'in bir alt kümesidir.

DEX dosya ağaç görünümünü filtreleme
Sınıf listesinin hemen üstündeki APK Analiz Aracı, Şekil 4'te gösterildiği gibi, seçilen DEX dosyasının içeriğini görüntülemek için filtreler sağlar.

BuildConfig
için alanları ve yöntemleri görüntüleyecek şekilde ayarlandı.Bir sınıftaki tüm yöntemleri ve alanları görüntülemek üzere filtreleri kullanmak için aşağıdakileri yapın:
- Dosya listesinde
classes.dex
dosyasını seçin. - Sınıf listesinde, bir sınıfa gidin ve seçin.
- Seçtiğiniz sınıfı genişletin.
- Sınıf alanlarını göstermek veya gizlemek için Alanları göster
ayarını açık duruma getirin.
- Sınıf yöntemlerini göstermek veya gizlemek için Yöntemleri göster
ayarını açık duruma getirin.
Başvurulan paketleri, sınıfları, yöntemleri ve alanları göstermek veya gizlemek için Başvurulan tüm yöntemleri veya alanları göster
ayarını açık duruma getirin.
Ağaç görünümünde, italik düğümler seçilen DEX dosyasında tanımı olmayan referanslardır. Bir DEX dosyası, farklı bir dosyada tanımlanan yöntemlere ve alanlara referans verebilir. Örneğin
System.out.println()
, Android çerçevesindekiprintln()
yöntemine bir referanstır.
ProGuard eşlemelerini yükleme
Filtreleme simgelerinin yanında ProGuard eşleme simgeleri bulunur. Adların kod karartmasını gösterme (mapping.txt
), kaldırılan düğümleri gösterme (usage.txt
) ve kaldırılamayan düğümleri belirtme (seeds.txt
) gibi DEX görüntüleyicisine işlev ekleyen bir dizi ProGuard eşleme dosyası yüklenene kadar ProGuard simgeleri devre dışı görünür.
İçe aktardığınız ProGuard eşleme dosyası, kod küçültme özelliğinin etkinleştirildiği DEX dosyalarını oluşturan derlemeden oluşmalıdır.

ProGuard eşleme dosyalarını yüklemek için aşağıdakileri yapın:
- Proguard eşlemelerini yükle... seçeneğini tıklayın.
Eşleme dosyalarını içeren proje klasörüne gidin ve tüm dosyaları, dosyaların herhangi bir kombinasyonunu veya dosyaları içeren klasörü yükleyin.
Eşleme dosyaları normalde
project/app/build/outputs/mappings/release/
konumundadır. Dosya seçici, bu proje yapısını algılarsa varsayılan olarak release klasörünü ayarlar.Öncelikle dosya seçici
mapping.txt
,seeds.txt
veusage.txt
ile tam olarak eşleşen dosya adlarını kontrol eder. Ardından dosya seçici, herhangi bir yerdemapping
,usage
veyaseeds
metnini içeren ve.txt
ile biten dosya adlarını kontrol eder. Örneğin,release-seeds-1.10.15.txt
bir eşlemedir.
Aşağıdaki listede eşleme dosyaları açıklanmaktadır:
seeds.txt
: ProGuard yapılandırmasının küçültme sırasında kaldırılmasını engellediği düğümler kalın karakterlerle gösterilmiştir.mapping.txt
: R8 tarafından kod karartma uygulanan düğümlerin orijinal adlarını geri yükleyebilmeniz için Adların gizlemesini kaldırözelliğini etkinleştirir. Örneğin
a
,b
,c
gibi karartılmış düğüm adlarınıMyClass
,MainActivity
vemyMethod()
olarak geri yükleyebilirsiniz.usage.txt
: Kaldırılan düğümleri gösterseçeneğini etkinleştirir. Böylece küçültme sırasında R8 tarafından kaldırılan sınıfları, yöntemleri ve alanları gösterebilirsiniz. Geri yüklenen düğümler üstü çizili olarak gösterilir.
Kodunuzu karartmak ve en aza indirmek için R8'i kullanma hakkında daha fazla bilgi edinmek için Uygulamanızı küçültme, gizleme ve optimize etme konulu makaleyi inceleyin.
Bayt kodunu gösterin, kullanımları bulun ve Keep kuralı oluşturun.
Sınıf liste görünümündeki düğümlerde bayt kodunu görmenizi, kullanımları bulmanızı ve seçilen düğüm için kopyalanıp yapıştırılacak ProGuard kurallarını gösteren bir iletişim kutusu görüntülemenizi sağlayan aşağıdaki seçeneklere sahip bir içerik menüsü bulunur. Sınıf liste görünümündeki herhangi bir düğümü sağ tıklayarak içerik menüsünü görüntüleyin.
Bayt kodunu göster: Seçilen sınıf, yöntem veya alanın derlenmesini açar ve küçük boyutlu bayt kodu gösterimini bir iletişim kutusunda aşağıdaki gibi görüntüler:

init
yöntemi için DEX bayt kodu.Kullanımları bulma: Şekil 7'de gösterildiği gibi, DEX kodunun diğer hangi bölümlerinin seçili sınıfa veya yönteme referans içerdiğini gösterir.
seeds.txt
yüklediyseniz, kalın harflerle gösterilen düğümler, ProGuard yapılandırmasının küçültme sırasında kaldırılmalarını engellediğini gösterir:

MyClass
referansları.
ProGuard Keep kuralı oluştur: Şekil 8'de gösterildiği gibi, kopyalayıp projenizin ProGuard yapılandırma dosyasına yapıştırabileceğiniz ProGuard kurallarını gösterir. Bu, belirli bir paketin, sınıfın, yöntemin veya alanın kod daraltma aşamasında kaldırılmasını önler. Daha fazla bilgi için Saklanacak kodu özelleştirme bölümüne bakın.

Kod ve kaynak varlıklarını görüntüleyin
Çeşitli derleme görevleri bir uygulamadaki nihai öğeleri değiştirir. Örneğin, ProGuard daraltma kuralları nihai kodunuzu değiştirebilir ve resim kaynakları, bir ürün türündeki kaynaklar tarafından geçersiz kılınabilir.
APK Analiz Aracı'nı kullanarak dosyalarınızın son sürümünü görüntülemek için Şekil 9'da gösterildiği gibi metin veya resim varlığının önizlemesi için ilgili varlığı tıklayın.

APK Analiz Aracı, çeşitli metin ve ikili program dosyalarını da görüntüleyebilir.
Örneğin, resources.arsc
varlık görüntüleyicisi bir dize kaynağı için dil çevirileri gibi yapılandırmaya özgü değerleri görmenize olanak tanır. Şekil 10'da, her bir dize kaynağının çevirilerini görebilirsiniz.

Dosyaları karşılaştırma
APK Analiz Aracı, iki farklı APK veya uygulama paketi dosyasındaki varlıkların boyutunu karşılaştırabilir. Bu, uygulamanızın boyutunun önceki sürüme kıyasla neden arttığını anlamanız gerektiğinde faydalıdır.
Güncellenmiş bir uygulamayı yayınlamadan önce aşağıdakileri yapın:
- Yayınlamak üzere olduğunuz uygulamanın sürümünü APK Analiz Aracı'na yükleyin.
- APK Analiz Aracı'nın sağ üst köşesindeki Önceki APK ile karşılaştır...'ı tıklayın.
Seçim iletişim kutusunda kullanıcılarınıza en son yayınlanan yapıyı bulun ve Tamam'ı tıklayın.
Güncellemenin kullanıcılar üzerindeki etkisini değerlendirmenize yardımcı olmak için Şekil 11'dekine benzer bir iletişim kutusu görünür.
Şekil 11'de, belirli bir uygulamanın hata ayıklama ile sürüm sürümleri arasındaki fark gösterilmektedir. Bu derleme türleri arasında, temel varlıkları farklı şekilde değiştiren farklı derleme seçenekleri kullanılır.
