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ế cho 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.

Bạn cũng sẽ 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 phần Cung cấp tài nguyên.

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

Mặc dù các trang được dẫn liên kết trên đây 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 khi đang ở chế độ xem Android hoặc Project (Dự án)), sau đó chọn File (Tệp ) > New (Mới) > Android resource file (Tệp tài nguyên Android).

  2. Đ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. Do vậy, bạn có thể không chỉnh sửa được, tuỳ thuộc vào loại đã chọn ở trên.
    • Nhóm tài nguyên: Chọn nhóm tài nguyên mà bạn muốn lưu tệp.
    • 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. Do vậy, bạn không nên chỉnh sửa tên này trừ khi 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 xem phần Chuỗi định tính có sẵn).
    • Chuỗi định tính có sẵn: Thay vì nhập chuỗi định tính cấu hình cho thư mục bố cục, bạn có thể thêm giá trị này bằng cách nhấp vào một chuỗi định tính trong danh sách bên trái, sau đó nhấp vào Add (Thêm) .
  3. 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: 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 (Mới) > type-name resource file (tệp tài nguyên). Thao tác này sẽ mở ra 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.

Mẹo: 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 độ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 ba tệp XML. Bạn có thể giữ ba 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ố chúng. Tuy nhiên, nếu chỉ sử dụng tệp XML cho tệp vectơ vẽ được động này, bạn có thể sử 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ể định nghĩa 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

Nếu bạn cầ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), sau đó chọn File (Tệp) > New (Mới) > Android resource directory (Thư mục tài nguyên Android).

  2. Điền thông tin chi tiết vào hộp thoại:
    • 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. Do vậy, bạn không nên chỉnh sửa tên này trừ khi 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).
    • Loại tài nguyên: Chọn loại tài nguyên bạn muốn tạo.
    • Nhóm tài nguyên: Chọn nhóm tài nguyên mà bạn muốn lưu bố cục.
    • Chuỗi định tính có sẵn: Thay vì nhập chuỗi định tính cấu hình cho thư mục bố cục, bạn có thể thêm giá trị này bằng cách nhấp vào một chuỗi định tính trong danh sách bên trái, sau đó nhấp vào Add (Thêm) .
  3. 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 được lưu tại 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 thành bất kỳ vị trí nào (tương ứng với tệp build.gradle) với 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.setSrcDirs("resources/main")
        }
        getByName("debug") {
            res.setSrcDirs("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 khác nhau:

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 đưa 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ó hai hoặc nhiều phiên bản trùng khớp, 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/foo.xml
  • res/layout-land/foo.xml

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

  • res/layout/foo.xml

Thì ứng dụng cuối cùng sẽ bao gồm res/layout/foo.xml từ loại bản gỡ lỗi và res/layout-land/foo.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 cho 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.