Jetpack Compose, kullanıcı arayüzü tasarım zamanı araçlarını doğrudan Kotlin'de işlese de tools: ad alanı, proje düzeyindeki yapılandırmalar için hâlâ gereklidir. AndroidManifest.xml ve res/raw/keep.xml gibi standart Android XML dosyaları, Lint uyarılarını yönetmek ve kaynak küçültücüyü yapılandırmak için tools: özelliklerini kullanır.
Uygulamanızı oluşturduğunuzda derleme araçları bu özellikleri kaldırır. Böylece APK boyutunuz veya çalışma zamanı davranışı etkilenmez.
Bu özellikleri kullanmak için, bunları kullanmak istediğiniz her XML dosyasının kök öğesine tools ad alanını ekleyin. Örneğin:
<RootTag xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" >
Hata işleme özellikleri
Aşağıdaki özellikler, lint uyarı mesajlarının bastırılmasına yardımcı olur:
tools:ignore
Amaçlanan kullanım: Herhangi bir öğe
Kullanan: Lint
Bu özellik, araçların bu öğede veya öğenin alt öğelerinde yoksaymasını istediğiniz, virgülle ayrılmış bir liste lint sorunu kimliklerini kabul eder.
Örneğin, araçlara MissingTranslation hatasını yoksaymalarını söyleyebilirsiniz:
<string name="show_all_apps" tools:ignore="MissingTranslation">All</string>
tools:targetApi
Amaçlanan kullanım: Herhangi bir öğe
Kullanım: Lint
Bu özellik, Java kodundaki @TargetApi ek açıklaması veya Kotlin kodundaki @RequiresApi ek açıklamasıyla aynı şekilde çalışır. Bu öğeyi destekleyen API düzeyini (tam sayı veya kod adı olarak) belirtmenize olanak tanır.
Bu, lint araçlarına bu öğenin ve alt öğelerinin yalnızca belirtilen API düzeyinde veya daha yüksek bir düzeyde kullanıldığını düşündüğünüzü bildirir. Bu, lint'in, söz konusu öğe veya özelliklerinin minSdkVersion olarak belirttiğiniz API düzeyinde kullanılamaması durumunda sizi uyarmasını engeller.
Örneğin, yalnızca API düzeyi 34 ve sonraki sürümlerde kullanılabilen bir ön plan hizmeti türünü kullanan bir <service>'yı AndroidManifest.xml'nizde beyan ettiğiniz ancak projenizin minSdkVersion'si daha düşük olduğu için bu özelliği kullanabilirsiniz:
<service
android:name=".playback.MediaPlaybackService"
android:foregroundServiceType="mediaPlayback"
xmlns:tools="http://schemas.android.com/tools"
tools:targetApi="34" />
tools:locale
Hedef kitle: <resources>
Kullanıldığı yerler: Lint, Android Studio düzenleyicisi
Bu, yazım denetleyiciden uyarı alınmaması için araçlara, belirtilen <resources> öğesindeki kaynakların varsayılan dilinin veya yerel ayarının ne olduğunu bildirir.
Aksi takdirde araç, dilin İngilizce olduğunu varsayar.
Değer, geçerli bir yerel ayar niteleyicisi olmalıdır.
Örneğin, varsayılan dizeler için kullanılan dilin İngilizce değil İspanyolca olduğunu belirtmek üzere bunu varsayılan values/strings.xml dosyanıza ekleyebilirsiniz:
<resources xmlns:tools="http://schemas.android.com/tools"
tools:locale="es">
Kaynak küçültme özellikleri
Aşağıdaki özellikler, katı referans kontrollerini etkinleştirmenize ve kullanılmayan kaynakları kaldırma kullanılırken belirli kaynakların saklanıp saklanmayacağını veya silinip silinmeyeceğini tanımlamanıza olanak tanır.
Kaynak küçültmeyi etkinleştirmek için shrinkResources özelliğini true olarak ayarlayın. Bu ayarı, kod küçültme için minifyEnabled ile birlikte build.gradle dosyanızda yapın.
Örneğin:
Modern
android { ... buildTypes { release { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }
Kotlin
android { ... buildTypes { getByName("release") { isShrinkResources = true isMinifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" ) } } }
tools:shrinkMode
Hedef kitle: <resources>
Kullanım alanı: Kaynak küçültme ile derleme araçları
Bu özellik, derleme araçlarının aşağıdakilerden hangisini kullanması gerektiğini belirtmenize olanak tanır:
- Güvenli mod: Açıkça alıntılanan ve
Resources.getIdentifier()çağrısıyla dinamik olarak referans verilebilecek tüm kaynakları saklayın. - Yüksek düzey modu: Yalnızca kodda veya diğer kaynaklarda açıkça alıntılanan kaynakları tutun.
Varsayılan olarak güvenli mod (shrinkMode="safe") kullanılır. Bunun yerine yüksek düzey modu kullanmak için <resources> etiketine shrinkMode="strict" ekleyin.
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:shrinkMode="strict" />
Yüksek düzey modu etkinleştirdiğinizde, kaldırılan ancak aslında istediğiniz kaynakları tutmak için tools:keep, daha da fazla kaynağı açıkça kaldırmak için ise tools:discard simgesini kullanmanız gerekebilir.
Daha fazla bilgi için Kaynaklarınızı küçültme başlıklı makaleyi inceleyin.
tools:keep
Hedef kitle: <resources>
Kullanım alanı: Kaynak küçültme ile derleme araçları
Kullanılmayan kaynakları kaldırmak için kaynak küçültme kullanılırken bu özellik, genellikle çalışma zamanında dolaylı olarak referans verildiği için (ör. dinamik olarak oluşturulan bir kaynak adını Resources.getIdentifier()'ye ileterek) tutulacak kaynakları belirtmenize olanak tanır.
Kullanmak için kaynak dizininizde (örneğin, res/raw/keep.xml) <resources> etiketiyle bir XML dosyası oluşturun ve tools:keep özelliğinde tutulacak her kaynağı virgülle ayrılmış bir liste olarak belirtin. Yıldız işaretini joker karakter olarak kullanabilirsiniz.
Örneğin:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@layout/used_1,@layout/used_2,@layout/*_3" />
Daha fazla bilgi için Kaynaklarınızı küçültme başlıklı makaleyi inceleyin.
tools:discard
Hedef kitle: <resources>
Kullanım alanı: Kaynak küçültme ile derleme araçları
Kullanılmayan kaynakları kaldırmak için kaynak küçültme kullanılırken bu özellik, genellikle kaynak referans verildiği ancak uygulamanızı etkilemeyecek şekilde referans verildiği için veya Gradle eklentisi kaynağa referans verildiğini yanlış bir şekilde çıkardığı için manuel olarak silmek istediğiniz kaynakları belirtmenize olanak tanır.
Kullanmak için kaynak dizininizde (ör. res/raw/keep.xml) <resources> etiketiyle bir XML dosyası oluşturun ve tools:discard özelliğinde atılacak her kaynağı virgülle ayrılmış liste olarak belirtin. Yıldız işaretini joker karakter olarak kullanabilirsiniz.
Örneğin:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:discard="@layout/unused_1" />
Daha fazla bilgi için Kaynaklarınızı küçültme başlıklı makaleyi inceleyin.