Tài liệu tham khảo về thuộc tính công cụ

Mặc dù Jetpack Compose xử lý trực tiếp công cụ thời gian thiết kế giao diện người dùng trong Kotlin, nhưng không gian tên tools: vẫn rất cần thiết cho các cấu hình ở cấp dự án. Các tệp XML Android tiêu chuẩn, chẳng hạn như AndroidManifest.xmlres/raw/keep.xml, sử dụng các thuộc tính tools: để quản lý cảnh báo Lint và định cấu hình trình giảm kích thước tài nguyên.

Khi bạn tạo ứng dụng, công cụ bản dựng sẽ xoá các thuộc tính này để không làm ảnh hưởng đến kích thước APK hoặc hành vi trong thời gian chạy.

Để sử dụng các thuộc tính này, hãy thêm không gian tên tools vào thành phần gốc của mỗi tệp XML mà bạn muốn sử dụng như sau:

<RootTag xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" >

Thuộc tính xử lý lỗi

Các thuộc tính sau đây giúp ngăn chặn thông báo cảnh báo về tìm lỗi mã nguồn:

tools:ignore

Dành cho: Mọi phần tử

Được dùng bởi: Công cụ Tìm lỗi mã nguồn

Thuộc tính này chấp nhận một danh sách được phân tách bằng dấu phẩy gồm các mã sự cố tìm lỗi mã nguồn mà bạn muốn các công cụ bỏ qua trên phần tử này hoặc bất kỳ thành phần con cháu nào.

Ví dụ: bạn có thể yêu cầu các công cụ bỏ qua lỗi MissingTranslation:

<string name="show_all_apps" tools:ignore="MissingTranslation">All</string>

tools:targetApi

Dành cho: Mọi phần tử

Được dùng bởi: Công cụ tìm lỗi mã nguồn

Thuộc tính này hoạt động giống như chú giải @TargetApi trong mã Java hoặc chú giải @RequiresApi trong mã Kotlin. Thuộc tính này cho phép bạn chỉ định cấp độ API (dưới dạng số nguyên hoặc tên mã) hỗ trợ phần tử này.

Thuộc tính này thông báo cho các công cụ tìm lỗi mã nguồn rằng bạn tin rằng phần tử này (và bất kỳ phần tử con nào) sẽ chỉ được dùng ở cấp độ API đã chỉ định trở lên. Điều này sẽ ngăn công cụ tìm lỗi mã nguồn gửi cảnh báo cho bạn nếu phần tử đó hoặc các thuộc tính của phần tử đó không có ở cấp API mà bạn chỉ định làm minSdkVersion.

Ví dụ: bạn có thể dùng thuộc tính này vì bạn đang khai báo một <service> trong AndroidManifest.xml sử dụng loại dịch vụ trên nền trước chỉ có ở cấp độ API 34 trở lên, nhưng minSdkVersion của dự án lại thấp hơn:

<service
    android:name=".playback.MediaPlaybackService"
    android:foregroundServiceType="mediaPlayback"
    xmlns:tools="http://schemas.android.com/tools"
    tools:targetApi="34" />

tools:locale

Dành cho: <resources>

Được sử dụng bởi: Công cụ tìm lỗi mã nguồn, trình chỉnh sửa Android Studio

Thuộc tính này cho các công cụ biết ngôn ngữ hoặc khu vực mặc định của các tài nguyên trong phần tử <resources> nhất định để tránh nhận cảnh báo từ trình kiểm tra lỗi chính tả. Nếu không, công cụ này sẽ giả định ngôn ngữ là tiếng Anh.

Giá trị này phải là một bộ hạn định ngôn ngữ hợp lệ.

Ví dụ: bạn có thể thêm đoạn giá trị này vào tệp values/strings.xml mặc định để cho biết ngôn ngữ dùng cho các chuỗi mặc định là tiếng Tây Ban Nha chứ không phải tiếng Anh:

<resources xmlns:tools="http://schemas.android.com/tools"
    tools:locale="es">

Thuộc tính rút gọn tài nguyên

Các thuộc tính sau cho phép bạn bật tính năng kiểm tra tham chiếu nghiêm ngặt và khai báo xem cần giữ lại hay huỷ một số tài nguyên nhất định khi sử dụng tính năng rút gọn tài nguyên.

Để bật tính năng rút gọn tài nguyên, hãy thiết lập thuộc tính shrinkResources thành true trong tệp build.gradle (cùng với minifyEnabled để bật tính năng rút gọn mã).

Ví dụ:

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

Dành cho: <resources>

Được dùng bởi: Công cụ xây dựng có tính năng rút gọn tài nguyên

Thông qua thuộc tính này, bạn có thể chỉ định xem các công cụ xây dựng có nên áp dụng những chế độ sau đây hay không:

  • Chế độ an toàn: Giữ lại tất cả tài nguyên được trích dẫn rõ ràng và có thể được tham chiếu động bằng một lệnh gọi đến Resources.getIdentifier().
  • Chế độ nghiêm ngặt: Chỉ giữ lại các tài nguyên được trích dẫn rõ ràng trong mã hoặc trong các tài nguyên khác.

Tuỳ chọn mặc định là sử dụng chế độ an toàn (shrinkMode="safe"). Để sử dụng chế độ nghiêm ngặt, hãy thêm shrinkMode="strict" vào thẻ <resources> như minh hoạ dưới đây:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:shrinkMode="strict" />

Khi bật chế độ nghiêm ngặt, bạn có thể phải sử dụng tools:keep để giữ lại tài nguyên đã bị xoá mà bạn thực sự cần đến, cũng như sử dụng tools:discard để xoá nhiều tài nguyên hơn nữa.

Để biết thêm thông tin, hãy xem phần Rút gọn tài nguyên của bạn.

tools:keep

Dành cho: <resources>

Được dùng bởi: Công cụ xây dựng có tính năng rút gọn tài nguyên

Khi sử dụng tính năng rút gọn tài nguyên để xoá các tài nguyên không sử dụng, thuộc tính này cho phép bạn chỉ định các tài nguyên cần giữ lại (thường là vì chúng được tham chiếu theo cách gián tiếp trong thời gian chạy, chẳng hạn như bằng cách truyền tên tài nguyên đã tạo đến Resources.getIdentifier() một cách linh động).

Để sử dụng, hãy tạo tệp XML trong thư mục tài nguyên của bạn (ví dụ: tại res/raw/keep.xml) với thẻ <resources> và chỉ định từng tài nguyên cần giữ lại trong tools:keep ở dạng danh sách được phân tách bằng dấu phẩy. Bạn có thể sử dụng ký tự dấu hoa thị làm ký tự đại diện.

Ví dụ:

<?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" />

Để biết thêm thông tin, hãy xem phần Rút gọn tài nguyên của bạn.

tools:discard

Dành cho: <resources>

Được dùng bởi: Công cụ xây dựng có tính năng rút gọn tài nguyên

Khi sử dụng tính năng rút gọn tài nguyên để loại bỏ các tài nguyên không sử dụng, thuộc tính này cho phép bạn chỉ định các tài nguyên mà bạn muốn loại bỏ theo cách thủ công (thường là do tài nguyên được tham chiếu nhưng theo một cách không ảnh hưởng đến ứng dụng của bạn hoặc vì trình bổ trợ Gradle đã suy luận sai rằng tài nguyên đó được tham chiếu).

Để sử dụng, hãy tạo tệp XML trong thư mục tài nguyên của bạn (ví dụ: tại res/raw/keep.xml) với thẻ <resources> và chỉ định từng tài nguyên cần giữ lại trong tools:discard ở dạng danh sách được phân tách bằng dấu phẩy. Bạn có thể sử dụng ký tự dấu hoa thị làm ký tự đại diện.

Ví dụ:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:discard="@layout/unused_1" />

Để biết thêm thông tin, hãy xem phần Rút gọn tài nguyên của bạn.

Tài nguyên khác

Xem nội dung