Meskipun Jetpack Compose menangani alat waktu desain UI langsung di Kotlin, namespace tools: tetap penting untuk konfigurasi tingkat project. File XML Android standar, seperti AndroidManifest.xml dan res/raw/keep.xml, menggunakan atribut tools: untuk mengelola peringatan Lint dan mengonfigurasi penyingkat resource.
Saat Anda membuat aplikasi, alat build menghapus atribut ini sehingga tidak berdampak pada ukuran APK atau perilaku runtime Anda.
Untuk menggunakan atribut ini, tambahkan namespace tools ke elemen root setiap file XML tempat Anda ingin menggunakannya, seperti ditunjukkan di sini:
<RootTag xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" >
Atribut penanganan error
Atribut berikut membantu menyembunyikan pesan peringatan lint:
tools:ignore
Ditujukan untuk: Semua elemen
Digunakan oleh: Lint
Atribut ini menerima daftar yang dipisahkan koma dari ID masalah lint yang Anda inginkan untuk diabaikan oleh alat pada elemen ini atau turunannya.
Misalnya, Anda dapat meminta alat agar mengabaikan error MissingTranslation:
<string name="show_all_apps" tools:ignore="MissingTranslation">All</string>
tools:targetApi
Ditujukan untuk: Semua elemen
Digunakan oleh: Lint
Atribut ini memiliki fungsi yang sama dengan @TargetApi anotasi dalam kode Java
atau @RequiresApi anotasi dalam kode Kotlin. Atribut ini memungkinkan Anda menentukan API level (sebagai integer atau nama kode) yang mendukung elemen ini.
Atribut ini memberi tahu alat lint bahwa Anda yakin elemen ini dan setiap turunannya hanya digunakan pada API level yang ditentukan atau yang lebih tinggi. Atribut ini mencegah lint mengirimkan peringatan kepada Anda jika elemen tersebut atau atributnya tidak tersedia pada API level yang Anda tentukan sebagai minSdkVersion Anda.
Misalnya, Anda dapat menggunakan atribut ini karena Anda mendeklarasikan a
<service> di AndroidManifest.xml yang menggunakan jenis layanan latar depan
yang hanya tersedia di API level 34 dan yang lebih tinggi, tetapi minSdkVersion
project Anda lebih rendah:
<service
android:name=".playback.MediaPlaybackService"
android:foregroundServiceType="mediaPlayback"
xmlns:tools="http://schemas.android.com/tools"
tools:targetApi="34" />
tools:locale
Ditujukan untuk: <resources>
Digunakan oleh: Lint, editor Android Studio
Atribut ini memberi tahu alat tentang bahasa atau lokalitas default untuk resource dalam
elemen <resources> tertentu guna menghindari peringatan dari pemeriksa ejaan.
Alat tanpa atribut ini menganggap bahasa tersebut adalah bahasa Inggris.
Nilainya harus merupakan penentu lokalitas yang valid.
Misalnya, Anda dapat menambahkan atribut ini ke file values/strings.xml default guna menunjukkan bahwa bahasa yang digunakan untuk string default adalah bahasa Spanyol, bukan bahasa Inggris:
<resources xmlns:tools="http://schemas.android.com/tools"
tools:locale="es">
Atribut penyingkatan resource
Atribut berikut memungkinkan Anda mengaktifkan pemeriksaan referensi yang ketat dan mendeklarasikan apakah akan mempertahankan atau menghapus resource tertentu saat menggunakan penyingkatan resource.
Untuk mengaktifkan penyingkatan resource, tetapkan properti shrinkResources
ke true dalam file build.gradle, beserta
minifyEnabled untuk penyingkatan kode.
Contoh:
Groovy
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
Ditujukan untuk: <resources>
Digunakan oleh: Alat build dengan penyingkatan resource
Atribut ini memungkinkan Anda menentukan apakah alat build harus menggunakan hal berikut:
- Mode aman: Mempertahankan semua resource yang dikutip secara eksplisit dan
yang mungkin direferensikan secara dinamis dengan panggilan ke
Resources.getIdentifier(). - Mode ketat: Hanya mempertahankan resource yang dikutip secara eksplisit dalam kode atau di resource lainnya.
Defaultnya adalah menggunakan mode aman (shrinkMode="safe"). Untuk menggunakan mode
ketat, tambahkan shrinkMode="strict" ke tag <resources> seperti ditunjukkan di sini:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:shrinkMode="strict" />
Jika mengaktifkan mode ketat, Anda mungkin perlu menggunakan tools:keep
untuk mempertahankan resource yang telah dihapus, tetapi sebenarnya Anda inginkan, dan menggunakan
tools:discard untuk menghapus lebih banyak lagi resource secara eksplisit.
Untuk informasi selengkapnya, lihat Menyingkat resource.
tools:keep
Ditujukan untuk: <resources>
Digunakan oleh: Alat build dengan penyingkatan resource
Saat menggunakan penyingkatan resource untuk menghapus resource yang tidak terpakai, atribut ini
memungkinkan Anda menentukan resource yang perlu dipertahankan, biasanya karena resource
tersebut direferensikan secara tidak langsung saat runtime, seperti dengan meneruskan nama resource
yang dihasilkan secara dinamis ke
Resources.getIdentifier().
Untuk menggunakan, buat file XML di direktori resource (misalnya,
res/raw/keep.xml) dengan tag <resources>
dan tentukan setiap resource yang perlu dipertahankan dalam atribut tools:keep sebagai
daftar yang dipisahkan koma. Anda dapat menggunakan karakter tanda bintang sebagai karakter pengganti.
Contoh:
<?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" />
Untuk informasi selengkapnya, lihat Menyingkat resource.
tools:discard
Ditujukan untuk: <resources>
Digunakan oleh: Alat build dengan penyingkatan resource
Saat menggunakan penyingkatan resource untuk menghilangkan resource yang tidak terpakai, atribut ini memungkinkan Anda menentukan resource yang ingin dihapus secara manual, biasanya karena resource tersebut sebenarnya direferensikan, tetapi dengan cara yang tidak memengaruhi aplikasi Anda, atau karena plugin Gradle salah menyimpulkan bahwa resource tersebut direferensikan.
Untuk menggunakan, buat file XML di direktori resource (misalnya,
res/raw/keep.xml) dengan tag <resources>dan tentukan setiap resource yang perlu dihapus dalam atribut tools:discard sebagai daftar yang dipisahkan koma. Anda dapat menggunakan karakter tanda bintang sebagai karakter pengganti.
Contoh:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:discard="@layout/unused_1" />
Untuk informasi selengkapnya, lihat Menyingkat resource.