AAPT2 (Android Öğe Paketleme Aracı), Android Studio ve Android Gradle Eklentisi, uygulamanızın kaynaklar. AAPT2; Search Ads 360'taki kaynaklar için optimize edilmiş ikili bir biçimde derler ve Android platformu.
Android Gradle Eklentisi 3.0.0 ve sonraki sürümler AAPT2'yi varsayılan olarak etkinleştirir. Siz
genellikle aapt2
öğesini kendiniz çağırmanız gerekmez. Ancak isterseniz
terminalinizi ve kendi derleme sisteminizi kullanıyorsanız,
AAPT2 yazın. AAPT2 ile ilgili derleme hatalarını da ayıklayabilirsiniz
komutunu çalıştırın. Bunun için,
Android SDK Derleme Araçları 26.0.2 ve sonraki sürümler.
Android SDK Build Tools'u komut satırından indirmek için şunu kullanın:
sdkmanager
adresine gidin ve aşağıdaki komutu çalıştırın:
sdkmanager "build-tools;build-tools-version"
SDK Derleme Araçları'nı indirdikten sonra AAPT2'yi
android_sdk/build-tools/version/
Android SDK Derleme Araçları'nın düzeltmeleri yayınlanmadığı için genellikle SDK Derleme Araçlarınızda yer alan AAPT2 sürümü en son AAPT2'nin son sürümünü edinmek için Google Maven'den AAPT2 indirin.
Linux veya Mac'te AAPT2'yi komut satırından kullanmak için aapt2
komutunu çalıştırın.
Windows'da aapt2.exe
komutunu çalıştırın.
AAPT2, artan verimlilik sayesinde kaynakların daha hızlı derlenmesini destekler derlememiz var. Artımlı derleme yapmak için kaynak işleme iki adıma ayrılır:
- Derle: Kaynak dosyalarını ikili biçimlerde derler.
- Bağlantı: Derlenen tüm dosyaları birleştirir ve tek bir dosyada paketler paketinden yararlanın.
Bu ayırma, artımlı derlemelerin performansını iyileştirmeye yardımcı olur. Örneğin, tek bir dosyada değişiklikler varsa yalnızca o dosyayı yeniden derlemeniz gerekir.
Google Maven'den AAPT2 indir
AAPT2'nin derleme araçlarında bulunmayan en yeni sürümünü edinmek için AAPT2'yi Google'ın Maven deposundan aşağıdaki şekilde indirin:
- Depo dizininde şu konuma gidin: adresine com.android.tools.build > aapt2 olarak değiştirin.
- AAPT2'nin en son sürümünün adını kopyalayın.
Kopyaladığınız sürüm adını aşağıdaki URL'ye ekleyin ve hedef işletim sistemi: https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/ aapt2-version/aapt2-aapt2-version- [windows | linux | osx].jar
Örneğin, Windows için 3.2.0-alpha18-4804415 sürümünü indirmek üzere şunu kullanın: https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/ 3.2.0-alpha18-4804415/aapt2-3.2.0-alpha18-4804415pencereler.jar
Bir tarayıcıda URL'ye gidin. AAPT2 kısa süre içinde indirilmeye başlayacak.
Yeni indirdiğiniz JAR dosyasının paketini açın.
JAR dosyası bir
aapt2
yürütülebilir dosyası ve biraz da yürütülebilir.
Derle
AAPT2 tüm videoların derlenmesini destekler
Örneğin, Android kaynak türleri
çekilebilir ve XML dosyası oluşturabilir. Derleme için AAPT2'yi çağırdığınızda
tek bir kaynak dosyası yükleyebilirsiniz. AAPT2, daha sonra dosyayı ayrıştırarak
ve .flat
uzantılı bir ara ikili dosya oluşturur.
AAPT2, dizinlerin tamamını iletirken dizindeki tüm dosyaları yeniden derler.
tek bir kaynak değişse bile. Her ne kadar
birden fazla kaynak dosyası içeren dizinleri --dir
kullanarak AAPT2'ye
bu şekilde artımlı kaynak derlemenin
avantajlarından yararlanamazsınız.
Çıkış dosyası türleri, derleme için sağladığınız girişe bağlı olarak farklılık gösterebilir. aşağıdaki tabloda gösterildiği gibi):
Giriş | Çıkış |
---|---|
Şunun gibi XML kaynak dosyaları:
String ve
Stil,
res/values/ dizininde bulunuyor
|
Uzantısı *.arsc.flat olan kaynak tablosu.
|
Diğer tüm kaynak dosyaları. |
Ayrıca, tüm PNG dosyaları varsayılan olarak sıkıştırılır ve |
AAPT2 çıkışları yürütülebilir dosyalar değildir ve daha sonra şunları eklemeniz gerekir: ikili program dosyalarını bağlantı aşamasında girdi olarak kullanır. Ancak oluşturulan APK dosyası, Android cihazlara dağıtabileceğiniz yürütülebilir bir dosya değil hemen kullanabilirsiniz, çünkü DEX dosyaları içermez ve imzalanmadı.
Söz dizimini derle
compile
kullanımına ilişkin genel söz dizimi aşağıdaki gibidir:
aapt2 compile path-to-input-files [options] -o output-directory/
Aşağıdaki örnekte AAPT2, values.xml
ve
Tek tek myImage.png
:
aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/
1. tabloda gösterildiği gibi, çıkış dosyasının adı girişe bağlıdır dosya adı ve üst dizininin adı.
Giriş olarak strings.xml
dosyasının kullanıldığı önceki örnek için aapt2
otomatik olarak
çıkış dosyasını values-en_strings.arsc.flat
olarak adlandırır. Ancak derlenen
çekilebilir dizinde saklanan çekilebilir dosyanın adı drawable_img.png.flat
'dir.
Derleme seçenekleri
Aşağıda gösterildiği gibi, compile
komutuyla kullanabileceğiniz birkaç seçenek bulunmaktadır.
(tablo 2'de):
Option | Açıklama |
---|---|
-o path
|
Derlenen kaynakların çıkış yolunu belirtir. Bu bir gerekli işarettir, çünkü AAPT2'nin derlenen kaynakları çıktısı ve depolayabileceği dizindir. |
--dir directory
|
Kaynakların taranacak dizini belirtir. Bu işareti birden fazla kaynak dosyasını derlemek için kullanabilirsiniz. ekler, artımlı derlemenin avantajlarını devre dışı bırakır. Bu nedenle, bu işaret büyük projeler için kullanılmamalıdır. |
--pseudo-localize
|
pseudolocalized oluşturur
en-XA ve en-XB gibi varsayılan dizelerin sürümleri.
|
--no-crunch
|
PNG işlemeyi devre dışı bırakır.
PNG dosyalarını zaten işlediyseniz veya dosya boyutunu küçültmeyen hata ayıklama derlemeleri oluşturuyor. Bu seçeneğin etkinleştirilmesi yürütme hızını artırır ancak çıktıyı artırır dosya boyutu. |
--legacy
|
AAPT'nin önceki sürümleri kullanıldığında izin verilen hataları giderir:
uyarılar.
Bu işaret, beklenmeyen derleme zamanı hataları için kullanılmalıdır. Sorunu çözmek için AAPT2 kullanırken meydana gelebilecek bilinen davranış değişiklikleri, AAPT2 kullanılırken davranış değişir. |
-zip file
|
file, taranacak res dizinini içeren bir ZIP dosyasıdır
kaynaklar.
|
-output-text-symbols file
|
Belirtilen
|
-preserve-visibility-of-styleables
|
Belirtilirse diğer tüm kaynaklar için kullanılır. Aksi takdirde, stil özellikleri herkese açık hale getirilir. |
-visibility [public|private|default|]
|
Derlenen kaynakların görünürlüğünü belirtilen düzeye ayarlar. |
-trace-folder folder
|
Belirtilen systrace JSON iz parçası oluşturur.
|
-source-path path
|
Derlenen kaynak dosyasının kaynak dosyası yolunu |
-h
|
Araç yardımını görüntüler. |
-v
|
Ayrıntılı günlük kaydını etkinleştirir. |
Bağlantı
Bağlantı aşamasında, AAPT2 derlemenin oluşturduğunuz tüm ara dosyaları
aşamasında (kaynak tablolar, ikili XML dosyaları ve işlenmiş PNG gibi)
ve ardından dosyaları tek bir APK halinde paketler. Ayrıca,
R.java
ve ProGuard kural dosyaları gibi yardımcı dosyalar oluşturulabilir
destekleyici materyalleri
inceleyeceksiniz. Ancak oluşturulan APK DEX bayt kodunu içermiyor ve
imzasız. Bu APK'yı bir cihaza dağıtamazsınız.
Şu işlemler için Android Gradle eklentisini kullanmıyorsanız: uygulamanızı komut satırından derlerseniz, derlemek için d8 gibi diğer komut satırı araçlarını kullanın Java bayt kodunu DEX bayt koduna ve apksigner’a dönüştürme kullanın.
Bağlantı söz dizimi
link
kullanımına ilişkin genel söz dizimi aşağıdaki gibidir:
aapt2 link path-to-input-files [options] -o outputdirectory/outputfilename.apk --manifest AndroidManifest.xml
Aşağıdaki örnekte AAPT2 iki ara dosyayı birleştirir:
drawable_Image.flat
ve values_values.arsc.flat
ve
AndroidManifest.xml
dosyası. AAPT2, sonucu android.jar
ile bağlar
dosyasını içeren bir dosyayı yükleyin:android
aapt2 link -o output.apk -I android_sdk/platforms/android_version/android.jar compiled/res/values_values.arsc.flat compiled/res/drawable_Image.flat --manifest /path/to/AndroidManifest.xml -v
Bağlantı seçenekleri
link
komutuyla aşağıdaki seçenekleri kullanabilirsiniz:
Option | Açıklama |
---|---|
-o path
|
Bağlı kaynak APK'sının çıkış yolunu belirtir. Bu işaret zorunlu bir işarettir çünkü öğenin yolunu belirtmeniz gerekir. bağlı kaynakları barındırabilen çıkış APK'sı oluşturun. |
--manifest file
|
Derlenecek Android manifest dosyasının yolunu belirtir. Bu gerekli işarettir, çünkü manifest dosyası Uygulamanızla ilgili önemli bilgiler (ör. paket adı ve uygulama) Kimlik. |
-I
|
Platformun android ad alanı bulunması.
|
-A directory
|
APK'ya dahil edilecek öğeler dizinini belirtir.
Orijinal, işlenmemiş dosyaları depolamak için bu dizini kullanabilirsiniz. Alıcı: daha fazla bilgi, oku Orijinal dosyalara erişme. |
-R file
|
overlay semantiğini kullanarak tek bir .flat dosyasını link hedefine iletir
<add-resource> etiketini kullanmadan elde edilir.
Mevcut bir dosyanın üzerine yer paylaşımlı bir kaynak dosyası sağladığınızda belirtilen en son çakışan kaynak kullanılıyor. |
--package-id package-id
|
Uygulamanız için kullanılacak paket kimliğini belirtir.
Belirttiğiniz paket kimliği 0x7f'den büyük veya 0x7f'ye eşit olmalıdır
|
--allow-reserved-package-id
|
Ayrılmış paket kimliğinin kullanımına izin verir. Ayrılmış paket kimlikleri, normalde paylaşılan
kütüphaneler ve 0x02 ile 0x7e (bu değerler dahil) aralığındadır. Şunu kullanarak:
Bu seçenek yalnızca |
--java directory
|
R.java öğesinin oluşturulacağı dizini belirtir.
|
--proguard proguard_options
|
ProGuard kuralları için çıkış dosyasını oluşturur. |
--proguard-conditional-keep-rules
|
Ana DEX için ProGuard kuralları için çıkış dosyasını oluşturur. |
--no-auto-version
|
Otomatik stil ve düzen SDK sürümü oluşturmayı devre dışı bırakır. |
--no-version-vectors
|
Vektör çekilebilirlerinin otomatik olarak sürüm oluşturmayı devre dışı bırakır. Bu işareti yalnızca APK'nızı Vector Drawable ile oluştururken kullanın Kitaplık'a dokunun. |
--no-version-transitions
|
Geçiş kaynakları için otomatik sürüm oluşturmayı devre dışı bırakır. Bu işareti yalnızca APK'nızı Geçiş Desteği kitaplığıyla oluştururken kullanın. |
--no-resource-deduping
|
Tüm platformlarda aynı değerlere sahip kaynakların otomatik olarak tekilleştirilmesini devre dışı bırakır. uyumlu yapılandırmalar kullanabilirsiniz. |
--enable-sparse-encoding
|
İkili arama ağacı kullanarak seyrek girişlerin kodlanmasını etkinleştirir. Bu, kaynak maliyeti dışında APK boyutunun optimizasyonu için yararlıdır getirme performansı sunar. |
-z
|
"Önerilen" olarak işaretlenen dizelerin yerelleştirilmesini gerektirir. |
-c config
|
Yapılandırmaların virgülle ayrılmış bir listesini sağlar.
Örneğin, destek kitaplığında bağımlılarınız varsa birden fazla dile ait çeviriler içeriyorsa kaynakları filtreleyebilirsiniz İngilizce veya İspanyolca gibi belirli bir dil yapılandırması için uygulanabilir. Dil yapılandırmasını iki harfli ISO 639-1 ile tanımlamanız gerekir dil kodu (isteğe bağlı olarak iki harfli ISO 3166-1-alpha-2) bölge kodundan önce küçük "r" gelir. Örneğin, en-rUS. |
--preferred-density density
|
AAPT2'nin en yakın eşleşen yoğunluğu ve şeridi seçmesine izin verir
yardımcı oluyorum.
Uygulamanızda kullanabileceğiniz çeşitli piksel yoğunluğu niteleyicileri vardır. ldpi, hdpi ve xhdpi gibi. Tercih edilen bir yoğunluk belirttiğinizde AAPT2, kaynakta en yakın eşleşen yoğunluğu seçer ve depolar tablosunu oluşturur ve diğer tüm tabloları kaldırır. |
--output-to-dir
|
APK içeriğini -o tarafından belirtilen bir dizine verir.
Bu işareti kullanırken hata alırsanız sorunları yeni sürüme geçirerek çözebilirsiniz Android SDK Derleme Araçları 28.0.0 veya daha yüksek. |
--min-sdk-version min-sdk-version
|
Şunun için kullanılacak varsayılan minimum SDK sürümünü belirler:
AndroidManifest.xml
|
--target-sdk-version target-sdk-version
|
Şunun için kullanılacak varsayılan hedef SDK sürümünü belirler:
AndroidManifest.xml
|
--version-code version-code
|
Yerleştirilecek sürüm kodunu belirtir
Yoksa AndroidManifest.xml .
|
--version-name version-name
|
Eklenecek sürüm adını belirtir
Yoksa AndroidManifest.xml .
|
--revision-code revision-code
|
Yerleştirilecek düzeltme kodunu belirtir
Yoksa AndroidManifest.xml dosyası.
|
--replace-version
|
--version-code , --version-name veya
--revision-code belirtilmişse bu değerler herhangi bir değerin yerini alır
zaten manifest dosyasında mevcuttur. Varsayılan olarak, manifest dosyası
bu özellikleri tanımlar.
|
--compile-sdk-version-nacodeme compile-sdk-version-name
|
Yerleştirilecek sürüm kodunu belirtir
Yoksa AndroidManifest.xml dosyası.
|
--compile-sdk-version-name compile-sdk-version-name
|
Eklenecek sürüm adını belirtir
Yoksa AndroidManifest.xml dosyası.
|
--proto-format
|
Protobuf biçiminde derlenmiş kaynaklar oluşturur. |
--non-final-ids
|
Nihai olmayan kaynak kimlikleriyle R.java oluşturur. Referanslar
uygulamanın kodundaki kimlikler kotlinc veya javac sırasında satır içine alınmıyor
derlememiz var.
|
--emit-ids path
|
Belirtilen yoldaki bir dosyayı kaynak türlerinin adlarını ve
daha iyi anlarsınız. --stable-ids ile kullanılmaya uygundur.
|
--stable-ids outputfilename.ext
|
--emit-ids ile oluşturulan ve
Kaynak türü adlarının ve atanan kimliklerinin listesi.
Bu seçenek, şunu silseniz bile atanan kimliklerin sabit kalmasını sağlar: veya bağlantı oluştururken yeni kaynaklar ekleyin. |
--custom-package package_name
|
Altında R.java oluşturulacak özel Java paketini belirtir.
|
--extra-packages package_name
|
Aynı R.java dosyasını, farklı bir paketle oluşturur
gösterir.
|
--add-javadoc-annotation annotation
|
Oluşturulan tüm Java sınıflarına bir JavaDoc ek açıklaması ekler. |
--output-text-symbols path
|
R sınıfının kaynak simgelerini içeren bir metin dosyası oluşturur
belirtilen dosyada.
Çıkış dosyasının yolunu belirtmeniz gerekir. |
--auto-add-overlay
|
<add-resource> etiketi.
|
--rename-manifest-package manifest-package
|
AndroidManifest.xml dosyasındaki paketi yeniden adlandırır.
|
--rename-instrumentation-target-package instrumentation-
target-package
|
Şu öğe için hedef paketin adını değiştirir:
instrumentation değerleridir.
Bu seçenek,
|
-0 extension
|
Sıkıştırmak istemediğiniz dosyaların uzantılarını belirtir. |
--split path:config[,config[..]]
|
Farklı bir yapılandırma grubu oluşturmak için kaynakları bir yapılandırma grubuna göre böler.
APK'nın sürümü.
Çıkış APK'sının yolunu yapılandırmanın üç yolu vardır. |
--proguard-main-dex file
|
Ana DEX için oluşturulan ProGuard kurallarının çıkış dosyası. |
--proguard-minimal-keep-rules
|
Minimal bir ProGuard saklama kuralı grubu oluşturur. |
--no-resource-removal
|
Kaynakların varsayılan olmadan otomatik olarak kaldırılmasını devre dışı bırakır. Bu seçeneği kullanın yalnızca çalışma zamanı kaynak yer paylaşımı paketleri oluştururken geçerlidir. |
-x
|
0x01 paket tanımlayıcısının kullanımını belirten eski işaret. |
--product products-list
|
Korunacak ürün adlarının virgülle ayrılmış bir listesini belirtir. |
--no-xml-namespaces
|
XML ad alanı önekini ve URI bilgilerini şuradan kaldırır:
AndroidManifest.xml dosyası ve XML ikili programları
res/* .
|
--shared-lib
|
Paylaşılan bir Android çalışma zamanı kitaplığı oluşturur. |
--static-lib
|
Statik bir Android kitaplığı oluşturur. |
--no-static-lib-packages
|
Tüm kitaplık kaynaklarını uygulamanın paketi altında birleştirir. |
--no-proguard-location-reference
|
ProGuard kural dosyalarının kaynak dosyaya referans içermesini önler. |
--private-symbols package-name
|
package-name, oluşturulurken kullanılacak paket adını belirtir
Özel simgeler için R.java . Belirtilmezse herkese açık ve
özel semboller uygulamanın paket adını kullanır.
|
--override-styles-instead-of-overlaying
|
-R kaynakta tanımlanan stillerin önceki tanımların yerini almasına neden olur
değerlendirebilirsiniz.
|
--rename-resources-package package-name
|
Kaynaklar tablosundaki paketi package-name olarak yeniden adlandırır. |
--no-compress
|
Hiçbir kaynağı sıkıştırmaz. |
--keep-raw-values
|
XML dosyalarındaki ham özellik değerlerini korur. |
--no-compress-regex regular-expression
|
regular-expression ile eşleşen uzantıları sıkıştırmaz.
Satır sonu için $ simgesini kullanın. Şunu kullanır:
büyük/küçük harfe duyarlı ECMAScript normal ifade dil bilgisi.
|
--warn-manifest-validation
|
Manifest doğrulama hatalarını uyarı olarak değerlendirir. |
--exclude-configs qualifier[,qualifier[..]]
|
Yapılandırmaları belirtilen değeri içeren kaynakların değerlerini hariç tutar niteleyicileri ele alalım. |
--debug-mode
|
Uygulama düğümüne android:debuggable="true" ekler
uygulamanın üretim aşamasında bile hata ayıklaması yapılabilir.
cihazlar.
|
--strict-visibility
|
Farklı görünürlük seviyelerine sahip yer paylaşımlarına izin verilmez. |
--exclude-sources
|
Şurada kaynak oluştururken kaynak dosya bilgilerini serileştirmez: Protobuf biçimindedir. |
--trace-folder folder
|
Belirtilen folder için systrace JSON iz parçası oluşturur.
|
--merge-only
|
Kaynak referanslarını doğrulamadan yalnızca kaynakları birleştirir. Bu
bayrak yalnızca --static-lib ile birlikte kullanılmalıdır
tıklayın.
|
-h
|
Yardım menüsünü görüntüler. |
-v
|
Çıkışın ayrıntı düzeyini artırır. |
Döküm
dump
,
link
komutudur.
Döküm söz dizimi
dump
kullanımına ilişkin genel söz dizimi aşağıdaki gibidir:
aapt2 dump sub-command filename.apk [options]
Aşağıdaki örnekte, APK:
aapt2 dump resources output.apk
Alt komutların dökümünü al
dump
komutuyla aşağıdaki alt komutlardan birini belirtin:
Alt komut | Açıklama |
---|---|
apc
|
sırasında oluşturulan AAPT2 kapsayıcısının (APC) içeriğini yazdırır derlememiz var. |
badging
|
APK'nın manifest dosyasından çıkarılan bilgileri yazdırır. |
configurations
|
APK'daki bir kaynak tarafından kullanılan her yapılandırmayı yazdırır. |
overlayable
|
APK'nın yer paylaşımlı kaynaklarını yazdırır. |
packagename
|
APK'nın paket adını yazdırır. |
permissions
|
APK'nın manifest dosyasından çıkarılan izinleri yazdırır. |
strings
|
APK'nın kaynak tablo dizesi havuzunun içeriğini yazdırır. |
styleparents
|
APK'da kullanılan stillerin üst öğelerini yazdırır. |
resources
|
APK'nın kaynak tablosunun içeriğini yazdırır. |
xmlstrings
|
Dizeleri, APK'nın derlenmiş XML'sinden yazdırır. |
xmltree
|
APK'nın derlenmiş XML ağacının bir ağacını yazdırır. |
Döküm seçenekleri
dump
ile aşağıdaki seçenekleri kullanın:
Option | Açıklama |
---|---|
--no-values
|
Kaynak gösterilirken değerlerin çıkışını engeller. |
--file file
|
Bir dosyayı, APK'dan döküm alınacak bağımsız değişken olarak belirtir. |
-v
|
Çıkışın ayrıntı düzeyini artırır. |
Fark
İki APK'yı karşılaştırmak ve aralarındaki farkları belirlemek için diff
uygulamasını kullanın.
Fark söz dizimi
diff
kullanımına ilişkin genel söz dizimi aşağıdaki gibidir:
aapt2 diff first.apk second.apk
diff
komutu için seçenek yoktur.
Optimizasyon yapın
optimize
, birleştirilmiş kaynaklarda optimizasyonları çalıştırmak için kullanılır ve
resources.arsc
APK'ya paketlenmeden önce. Bu optimizasyon
boyutu ve sayısına bağlı olarak APK boyutunu yaklaşık %1-3 oranında azaltabilir.
için iyi bir fırsattır.
Söz dizimini optimize et
optimize
kullanımına ilişkin genel söz dizimi aşağıdaki gibidir:
aapt2 optimize options file[,file[..]]
Aşağıdaki örnek, input.apk
kaynağındaki kaynakları optimize eder ve yeni bir,
output.apk
içinde optimize edilmiş APK. Normal düz tablo temsilinin yerini alır
daha küçük bir ikili arama ağacı sunar. Böylece
alma performansı maliyeti:
aapt2 optimize -o output.apk --enable-sparse-encoding input.apk
Optimizasyon seçenekleri
optimize
ile aşağıdaki seçenekleri kullanabilirsiniz:
Option | Açıklama |
---|---|
-o path
|
Bağlı kaynak APK'sının çıkış yolunu belirtir.
Bu işaret zorunlu bir işarettir çünkü öğenin yolunu belirtmeniz gerekir. bağlı kaynakları barındırabilen çıkış APK'sı oluşturun. |
-d directory
|
Bölmeler için çıkış dizini yolunu belirtir. |
-x path
|
XML yapılandırma dosyasının yolunu belirtir. |
-p
|
Çoklu APK yapılarını yazdırır ve çıkar. |
--target-densities density[,density[..]]
|
APK'nın kullandığı ekran yoğunluklarının virgülle ayrılmış listesini belirtir optimize edilir. Şu cihazlarda kullanılmayan tüm kaynaklar: belirtilen yoğunluklar APK'dan kaldırılır. |
--resources-config-path path
|
Şu öğenin listesini içeren Biçim: type/resource_name#[directive][,directive] |
-c config[,config[..]]
|
Dahil edilecek yapılandırmaların virgülle ayrılmış listesini belirtir. Varsayılan tüm yapılandırmanın üç yolu vardır. |
--split path:config[,config[..]]
|
Farklı bir yapılandırma grubu oluşturmak için kaynakları bir yapılandırma grubuna göre böler.
APK'nın sürümü.
Çıkış APK'sının yolunu yapılandırmanın üç yolu vardır. |
--keep-artifacts artifact[,artifact[..]]
|
Saklanacak yapıların virgülle ayrılmış listesini belirtir. Herhangi bir değer belirtilmezse saklanır. |
--enable-sparse-encoding
|
İkili arama ağacı kullanarak seyrek girişlerin kodlanmasını etkinleştirir. Bu seçenek, APK boyutunun optimizasyonu açısından yararlıdır ancak performansı gösterir. |
--collapse-resource-names
|
Kaynak adlarını, anahtar dizesi havuzunda tek bir değer olacak şekilde daraltır.
Kaynaklar, no_collapse yönergesi kullanılarak muaf tutulur:
--resources-config-path tarafından belirtilen bir dosya.
|
--shorten-resource-paths
|
APK içindeki kaynakların yollarını kısaltır. |
--resource-path-shortening-map path
|
Eski kaynak yollarının kısaltılmış yollara ait haritasının çıkış yolunu belirtir. |
-v
|
Çıkışın ayrıntı düzeyini artırır. |
-h
|
Araç yardımını görüntüler. |
İzleyicileri üyelere dönüştürün
AAPT compile
komutu, varsayılan olarak kaynakları ikili biçimde derler
bir uygulamadır. Protobuf biçimi de belirtilebilir
--proto-format
belirterek AAB'lere uygun olan bir metin girin. convert
komutu, iki biçim arasında APK'ları dönüştürür.
Söz dizimini dönüştür
convert
için genel söz dizimi aşağıdaki gibidir:
aapt2 convert -o output-file options file[,file[..]]
Aşağıdaki örnek, input.apk
kaynağındaki kaynakları dönüştürür ve yeni bir,
output.apk
sürümündeki APK, protobuf biçimindeki kaynaklar içeriyor. Her zamankinin yerini alıyor
daha küçük boyutlu bir ikili arama ağacıyla düz tablo gösterimi
alma performansı pahasına daha küçük bir APK'da kullanılır:
aapt2 convert -o output.apk --output-format proto --enable-sparse-encoding input.apk
Dönüştürme Seçenekleri
convert
ile aşağıdaki seçenekleri kullanın:
Option | Açıklama |
---|---|
-o path
|
Bağlı kaynak APK'sının çıkış yolunu belirtir. Bu işaret zorunlu bir işarettir çünkü öğenin yolunu belirtmeniz gerekir. bağlı kaynakları barındırabilen çıkış APK'sı oluşturun. |
--output-format [proto|binary]
|
Çıktının biçimi. Kabul edilen değerler: proto ve
binary . Ayarlanmazsa varsayılan olarak binary olur.
|
--enable-sparse-encoding
|
İkili arama ağacı kullanarak seyrek girişlerin kodlanmasını etkinleştirir. Bu seçenek, APK boyutunun optimizasyonu açısından yararlıdır ancak performansı gösterir. |
--keep-raw-values
|
XML dosyalarındaki ham özellik değerlerini korur. |
-v
|
Çıkışın ayrıntı düzeyini artırır. |
-h
|
Araç yardımını görüntüler. |
Arka plan programı modu
AAPT sürüm 2.19'da, komut vermek için arka plan programı modu kullanıma sunulmuştur. Arka plan programı modu, tek bir AAPT oturumunda birden fazla komut girersiniz.
Arka plan programı söz dizimi
Aşağıdaki komutla arka plan programı modunu başlatın:
aapt2 daemon
Arka plan programı modu çalışmaya başladıktan sonra komut girebilirsiniz. komutu, ayrı bir satırda olmalı ve komutun sonunda boş bir satır içermelidir. Control+D tuşlarına basarak arka plan programı modundan çıkın.
Aşağıdaki compile
komutlarını ayrı ayrı kullanabilirsiniz:
aapt2 compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ aapt2 compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/
Bu komutlar arka plan programı modunda şu şekilde girilebilir:
aapt2 daemon Ready compile project_root/module_root/src/main/res/values-en/strings.xml -o compiled/ Done compile project_root/module_root/src/main/res/drawable/myImage.png -o compiled/ Done ^D Exiting daemon
Arka plan programı modu seçenekleri
Arka plan programı modu için tek seçenek
systrace
JSON oluşturan --trace-folder folder
iz parçası, belirtilen folder ile aynı olmalıdır.
Sürüm
version
komutuyla kullandığınız AAPT2 sürümünü belirleyin:
aapt2 version Android Asset Packaging Tool (aapt) 2.19-8678579
AAPT2 kullanılırken davranış değişir
AAPT2'den önce Android Öğe Paketleme Aracı'nın varsayılan sürümü AAPT idi. Bu özellik artık kullanımdan kaldırıldı. AAPT2 her ne kadar bu bölümde, yapmanız gereken bazı davranış değişiklikleri bilgi sahibidir.
Android manifestindeki öğe hiyerarşileri
AAPT'nin önceki sürümlerinde,
AndroidManifest.xml
dosya yoksayıldı veya uyarı aldı.
Örneğin, aşağıdaki örneği ele alalım:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myname.myapplication"> <application ... <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <action android:name="android.intent.action.CUSTOM" /> </activity> </application> </manifest>
AAPT'nin önceki sürümleri, yanlış yerleştirilmiş <action>
etiketini yoksayar.
AAPT2 ile aşağıdaki hatayı alırsınız:
AndroidManifest.xml:15: error: unknown element <action> found.
Sorunu çözmek için manifest öğelerinizin doğru şekilde iç içe yerleştirilmiş olduğundan emin olun. Daha fazla bilgi için Uygulama manifestine genel bakış.
Kaynak beyanı
Artık name
özelliğinden kaynak türünü belirtemezsiniz.
Aşağıdaki örnekte bir attr
kaynak öğesi yanlış bir şekilde tanımlanıyor:
<style name="childStyle" parent="parentStyle"> <item name="attr/my_attr">@color/pink</item> </style>
Bu şekilde bir kaynak türünün tanımlanması, aşağıdaki derleme hatasıyla sonuçlanır:
Error: style attribute 'attr/attr/my_attr (aka my.package:attr/attr/my_attr)' not found.
Bu hatayı düzeltmek için type="attr"
kullanarak türü açıkça bildirin:
<style name="childStyle" parent="parentStyle"> <item type="attr" name="my_attr">@color/pink</item> </style>
Ayrıca, bir <style>
öğesi belirtilirken üst öğesi de bir olmalıdır.
stil kaynak türü. Aksi takdirde, aşağıdakine benzer bir hata alırsınız:
Error: (...) invalid resource type 'attr' for parent of style
@ kaynak referans simgelerinin yanlış kullanımı
Kaynağı atladığınızda veya yanlış yerleştirdiğinizde AAPT2 yapı hataları bildirir
referans sembolleri (@
). Örneğin,
bir stil özelliği belirterek:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> ... <!-- Note the missing '@' symbol when specifying the resource type. --> <item name="colorPrimary">color/colorPrimary</item> </style>
Modülü oluştururken AAPT2 aşağıdaki derleme hatasını verir:
ERROR: expected color but got (raw string) color/colorPrimary
Ayrıca, bir
android
ad alanındaki kaynak:
... <!-- When referencing resources from the 'android' namespace, omit the '@' symbol. --> <item name="@android:windowEnterAnimation"/>
Modülü oluştururken AAPT2 aşağıdaki derleme hatasını verir:
Error: style attribute '@android:attr/windowEnterAnimation' not found
Kitaplıkların yanlış yapılandırılması
Uygulamanızın, eski dosya adıyla oluşturulmuş üçüncü taraf kitaplığına bağımlılığı varsa
Android SDK Derleme Araçları'nın diğer sürümlerini kullanıyorsanız,
uygulama çalışma zamanında herhangi bir hata veya uyarı görüntülemeden kilitlenebilir. Bu kilitlenme
kitaplığın oluşturulması sırasında R.java
alanlarının
şunu açıkladı: final
. Sonuç olarak, tüm kaynak kimlikleri
derslere katılmıştım.
AAPT2, oluşturma sırasında kimlikleri kitaplık kaynaklarına yeniden atayabilmeye dayanır
en iyi şekilde yararlanabilirsiniz. Kitaplık, kimliklerin final
olduğunu varsayar ve bunları
bir çalışma zamanı uyuşmazlığı vardır.
Bu hatayı gidermek için kitaplığın yazarıyla iletişime geçerek kitaplığı yeniden oluşturun sürümünü kullanarak Android SDK Derleme Araçları'nın en son sürümünü kullanmalı ve kitaplığını açar.