Thêm tài nguyên ứng dụng

Tài nguyên ứng dụng như bitmap và bố cục được sắp xếp thành các thư mục dành riêng cho từng loại cụ thể trong thư mục res/ của mỗi mô-đun. Bạn cũng có thể thêm phiên bản thay thế của mỗi tệp được tối ưu hoá cho các cấu hình thiết bị khác nhau (chẳng hạn như phiên bản bitmap có độ phân giải cao cho màn hình có độ phân giải cao).

Android Studio giúp bạn thêm tài nguyên mới và tài nguyên thay thế theo nhiều cách, tuỳ vào loại tài nguyên bạn muốn thêm. Trang này mô tả cách thêm tệp tài nguyên cơ bản, cách thay đổi vị trí của tài nguyên và cách hợp nhất tài nguyên.

Hãy xem các trang sau đây để biết thông tin chi tiết về cách tạo các loại tài nguyên cụ thể:

Để biết thông tin về cách tham chiếu tài nguyên từ mã ứng dụng của bạn, hãy xem Tổng quan về tài nguyên ứng dụng.

Thêm tệp tài nguyên XML

Mặc dù các đường liên kết đến trang trước mô tả quy trình làm việc được tuỳ chỉnh cho từng loại tài nguyên, nhưng bạn có thể thêm bất kỳ tệp tài nguyên XML nào bằng cách làm theo các bước sau:

  1. Nhấp vào mô-đun ứng dụng mục tiêu trong cửa sổ Project (Dự án) trong khung hiển thị Android hoặc Project (Dự án).

  2. Chọn File > New > Android resource file (Tệp > Mới > Tệp tài nguyên Android).

    Hình 1. Hộp thoại New Resource File (Tệp tài nguyên mới).

  3. Điền thông tin chi tiết vào hộp thoại:
    • Tên tệp: Nhập tên cho tệp XML (không yêu cầu hậu tố .xml).
    • Loại tài nguyên: Chọn loại tài nguyên bạn muốn tạo.
    • Thành phần gốc: Nếu có thể, hãy chọn thành phần XML gốc cho tệp. Một số loại tài nguyên chỉ hỗ trợ một loại thành phần gốc. Tuỳ thuộc vào loại tài nguyên đã chọn, bạn có thể không chỉnh sửa được tài nguyên này.
    • Source set (Nhóm tài nguyên): Chọn nhóm tài nguyên mà bạn muốn lưu tệp.
    • Directory name (Tên thư mục): Bạn phải đặt tên thư mục theo cách cụ thể cho loại tài nguyên và chuỗi định tính cấu hình. Không chỉnh sửa tên này trừ phi bạn muốn thêm chuỗi định tính cấu hình vào tên thư mục theo cách thủ công (thay vào đó, hãy sử dụng Chuỗi định tính có sẵn).
    • Available qualifiers (Chuỗi định tính có sẵn): Thay vì đưa chuỗi định tính cấu hình vào tên thư mục theo cách thủ công, bạn có thể thêm chuỗi định tính bằng cách chọn một chuỗi định tính trong danh sách rồi nhấp vào biểu tượng Thêm .
  4. Sau khi thêm tất cả các chuỗi định tính bạn muốn, hãy nhấp vào OK.

Mẹo: Để mở phiên bản đơn giản hoá của hộp thoại New Resource File (Tệp tài nguyên mới) dành riêng cho loại tài nguyên bạn muốn thêm, hãy nhấp chuột phải vào một thư mục tài nguyên hiện có trong thư mục res rồi chọn New > type-name resource file (Mới > Tệp tài nguyên type-name).

Tài nguyên XML phức tạp cùng dòng

Một số tài nguyên phức tạp yêu cầu nhiều tệp tài nguyên XML. Ví dụ: một vectơ vẽ được dạng ảnh động gồm một đối tượng vectơ vẽ được và một đối tượng ảnh động sẽ cần có ít nhất 3 tệp XML.

Trong ví dụ này, bạn có thể tạo và giữ 3 tệp XML riêng biệt nếu cần sử dụng lại một hoặc nhiều tệp trong số đó. Tuy nhiên, nếu chỉ sử dụng tệp XML cho tệp vectơ vẽ được dạng ảnh động này, bạn có thể dùng định dạng tài nguyên cùng dòng được cung cấp trong Công cụ đóng gói tài nguyên Android (AAPT). Với AAPT, bạn có thể xác định cả 3 tài nguyên trong 1 tệp XML. Để biết thêm thông tin, hãy xem phần Tài nguyên XML phức tạp cùng dòng.

Thêm thư mục tài nguyên

Để thêm thư mục tài nguyên mới, hãy làm theo các bước sau:

  1. Nhấp vào mô-đun ứng dụng mục tiêu trong cửa sổ Project (Dự án).

  2. Chọn File > New > Android resource directory (Tệp > Mới > Thư mục tài nguyên Android).

    Hình 2. Hộp thoại New Resource Directory (Thư mục tài nguyên mới).

  3. Điền thông tin chi tiết vào hộp thoại:
    • Directory name (Tên thư mục): Bạn phải đặt tên thư mục theo cách cụ thể đối với loại tài nguyên và tổ hợp chuỗi định tính cấu hình. Không chỉnh sửa tên này trừ phi bạn muốn thêm chuỗi định tính cấu hình vào tên thư mục theo cách thủ công (thay vào đó, hãy sử dụng Chuỗi định tính có sẵn).
    • Resource type (Loại tài nguyên): Chọn loại tài nguyên bạn muốn đưa vào thư mục.
    • Source set (Nhóm tài nguyên): Chọn nhóm tài nguyên mà bạn muốn đưa vào thư mục.
    • Available qualifiers (Chuỗi định tính có sẵn): Thay vì đưa chuỗi định tính cấu hình vào tên thư mục theo cách thủ công, bạn có thể thêm chuỗi định tính bằng cách chọn một chuỗi định tính trong danh sách rồi nhấp vào biểu tượng Thêm .
  4. Sau khi thêm tất cả các chuỗi định tính bạn muốn, hãy nhấp vào OK.

Thay đổi thư mục tài nguyên

Theo mặc định, tài nguyên của bạn nằm trong module-name/src/source-set-name/res/. Ví dụ: tài nguyên thuộc nhóm tài nguyên chính trong mô-đun của bạn được lưu tại src/main/res/ còn tài nguyên thuộc nhóm tài nguyên gỡ lỗi được lưu tại src/debug/res/.

Tuy nhiên, bạn có thể thay đổi các đường dẫn này tới bất kỳ vị trí nào (tương ứng với tệp build.gradle) có thuộc tính res.srcDirs trong khối sourceSets. Ví dụ:

Groovy

android {
    sourceSets {
        main {
            res.srcDirs = ['resources/main']
        }
        debug {
            res.srcDirs = ['resources/debug']
        }
    }
}

Kotlin

android {
    sourceSets {
        getByName("main") {
            res.srcDirs("resources/main")
        }
        getByName("debug") {
            res.srcDirs("resources/debug")
        }
    }
}

Bạn cũng có thể chỉ định nhiều thư mục tài nguyên cho một nhóm tài nguyên, và sau đó các công cụ xây dựng sẽ hợp nhất các thư mục đó với nhau. Ví dụ:

Groovy

android {
    sourceSets {
        main {
            res.srcDirs = ['res1', 'res2']
        }
    }
}

Kotlin

android {
    sourceSets {
        main {
            res.srcDirs("res1", "res2")
        }
    }
}

Để biết thêm thông tin, hãy đọc về nhóm tài nguyên.

Hợp nhất tài nguyên

Tài nguyên trong tệp ứng dụng cuối cùng của bạn có thể đến từ 3 nguồn:

  • Nhóm tài nguyên chính (thường được lưu tại src/main/res/)
  • Nhóm tài nguyên biến thể xây dựng
  • Thư viện Android (AAR)

Khi mọi tài nguyên từ mỗi nhóm tài nguyên hoặc thư viện đều là duy nhất, tất cả sẽ được thêm vào ứng dụng cuối cùng. Một tài nguyên được coi là duy nhất nếu có tên tệp duy nhất trong cả thư mục loại tài nguyênbộ hạn định tài nguyên (nếu đã xác định).

Nếu một tài nguyên có 2 phiên bản trùng khớp trở lên, thì chỉ một phiên bản được đưa vào ứng dụng cuối cùng. Công cụ xây dựng sẽ chọn phiên bản cần giữ lại dựa trên thứ tự ưu tiên sau (bên trái là mức độ ưu tiên cao nhất):

biến thể bản dựng > loại bản dựng > phiên bản sản phẩm > nhóm tài nguyên chính > phần phụ thuộc thư viện

Ví dụ: nếu nhóm tài nguyên chính chứa:

  • res/layout/example.xml
  • res/layout-land/example.xml

Và loại bản gỡ lỗi chứa:

  • res/layout/example.xml

Thì ứng dụng cuối cùng sẽ bao gồm res/layout/example.xml từ loại bản gỡ lỗi và res/layout-land/example.xml từ nhóm tài nguyên chính.

Tuy nhiên, nếu cấu hình bản dựng của bạn chỉ định nhiều thư mục tài nguyên của một nhóm tài nguyên nhất định và giữa các nguồn đó có xung đột, thì sẽ có lỗi xảy ra và không hợp nhất được vì mỗi thư mục tài nguyên đều có cùng mức độ ưu tiên.