Trang này mô tả các chế độ cài đặt hữu ích cho ứng dụng trong tệp build.gradle.kts
ở cấp mô-đun. Ngoài việc cung cấp thông tin tổng quan về các thuộc tính quan trọng được đặt trong tệp build.gradle.kts
, hãy tìm hiểu cách:
- Thay đổi mã ứng dụng cho nhiều cấu hình bản dựng.
- Điều chỉnh không gian tên một cách an toàn, không liên quan gì đến mã ứng dụng.
Đặt mã ứng dụng
Mỗi ứng dụng Android đều có một mã ứng dụng duy nhất trông giống tên gói Kotlin hoặc Java, chẳng hạn như com.example.myapp. Mã này chỉ xác định duy nhất ứng dụng của bạn trên thiết bị và trong Cửa hàng Google Play.
Mã ứng dụng của bạn được xác định bằng thuộc tính applicationId
trong tệp build.gradle.kts
của mô-đun, như minh hoạ dưới đây. Cập nhật giá trị của applicationId
bằng cách thay thế com.example.myapp
bằng mã nhận dạng của ứng dụng:
Kotlin
android { defaultConfig { applicationId = "com.example.myapp" minSdk = 15 targetSdk = 24 versionCode = 1 versionName = "1.0" } ... }
Groovy
android { defaultConfig { applicationId "com.example.myapp" minSdkVersion 15 targetSdkVersion 24 versionCode 1 versionName "1.0" } ... }
Mặc dù mã ứng dụng trông giống tên gói Kotlin hoặc Java truyền thống, nhưng các quy tắc đặt tên cho mã ứng dụng sẽ bị hạn chế hơn một chút:
- Mã ứng dụng phải có ít nhất 2 phân đoạn (gồm một hoặc nhiều dấu chấm).
- Mỗi phân đoạn phải bắt đầu bằng một chữ cái.
- Tất cả ký tự phải có dạng chữ-số hoặc dấu gạch dưới [a-zA-Z0-9_].
Khi bạn tạo một dự án mới trong Android Studio, applicationId
sẽ tự động được gán tên gói mà bạn chọn trong quá trình thiết lập. Từ giờ trở đi, bạn có thể bật/tắt 2 thuộc tính một cách độc lập, nhưng bạn không nên làm vậy.
Khi đặt mã ứng dụng, bạn nên làm như sau:
- Giữ cho mã ứng dụng giống với không gian tên. Sự khác biệt giữa 2 thuộc tính đôi khi có thể gây nhầm lẫn, nhưng nếu bạn giữ cho chúng giống với nhau thì không cần phải lo lắng nữa.
- Không nên thay đổi mã ứng dụng sau khi phát hành ứng dụng. Nếu bạn thay đổi, Cửa hàng Google Play sẽ coi lượt tải lên tiếp theo là của một ứng dụng mới.
- Xác định rõ mã ứng dụng. Nếu không xác định rõ mã ứng dụng bằng cách sử dụng thuộc tính
applicationId
, thì mã đó sẽ tự động lấy giá trị giống với không gian tên. Điều này có nghĩa là việc thay đổi không gian tên sẽ làm thay đổi mã ứng dụng (thường thì đây là điều bạn không mong muốn).
Thay đổi mã ứng dụng để kiểm thử
Theo mặc định, các công cụ xây dựng áp dụng một mã ứng dụng cho APK kiểm thử đo lường bằng cách dùng mã ứng dụng đã được thêm .test
vào phần cuối cho biến thể bản dựng đã cho. Ví dụ: APK kiểm thử cho biến thể bản dựng com.example.myapp.free
có mã ứng dụng là com.example.myapp.free.test
.
Mặc dù không cần thiết, nhưng bạn có thể thay đổi mã ứng dụng bằng cách xác định thuộc tính testApplicationId
trong khối defaultConfig
hoặc productFlavor
của mình.
Đặt không gian tên
Mỗi mô-đun của Android đều có một không gian tên dùng làm tên gói Kotlin hoặc Java cho các lớp R
và BuildConfig
được tạo.
Không gian tên của bạn được xác định bằng thuộc tính namespace
trong tệp build.gradle.kts
của mô-đun, như hiển thị trong đoạn mã dưới đây. Ban đầu, namespace
được đặt thành tên gói mà bạn chọn khi tạo dự án.
Kotlin
android { namespace = "com.example.myapp" ... }
Groovy
android { namespace "com.example.myapp" ... }
Trong khi xây dựng ứng dụng thành gói ứng dụng cuối cùng (APK), các công cụ xây dựng Android dùng không gian tên đó làm không gian tên cho lớp R
đã tạo của ứng dụng (dùng để truy cập vào tài nguyên ứng dụng của bạn).
Ví dụ: Trong tệp bản dựng trước đó, lớp R
được tạo tại com.example.myapp.R
.
Do đó, tên bạn đặt cho thuộc tính namespace
của tệp build.gradle.kts
phải luôn khớp với tên gói cơ sở của dự án, nơi bạn lưu giữ các hoạt động và mã ứng dụng khác. Bạn có thể có các gói phụ khác trong dự án của mình, nhưng các tệp đó phải nhập lớp R
bằng cách sử dụng không gian tên của thuộc tính namespace
.
Để quy trình làm việc đơn giản hơn, bạn nên giữ cho không gian tên giống với mã ứng dụng theo như mặc định.
Thay đổi không gian tên
Trong hầu hết các trường hợp, bạn nên giữ cho không gian tên giống với mã ứng dụng theo như mặc định. Tuy nhiên, bạn có thể phải thay đổi không gian tên tại một thời điểm nào đó nếu bạn sắp xếp lại mã hoặc để tránh xung đột về không gian tên.
Trong những trường hợp này, hãy thay đổi không gian tên bằng cách cập nhật thuộc tính namespace
trong tệp build.gradle.kts
của mô-đun không liên quan đến mã ứng dụng. Trước khi bạn thực hiện điều này, hãy đảm bảo mã ứng dụng của bạn được xác định rõ ràng để việc thay đổi không gian tên không làm thay đổi mã ứng dụng. Để biết thêm thông tin về ảnh hưởng của không gian tên đối với mã ứng dụng, vui lòng xem phần Đặt mã ứng dụng.
Nếu bạn đặt các tên khác nhau cho namespace
và Gradle applicationId
, thì các công cụ xây dựng sẽ sao chép mã ứng dụng vào tệp kê khai cuối cùng của ứng dụng khi kết thúc quá trình xây dựng.
Vì vậy, nếu kiểm tra tệp AndroidManifest.xml
của mình sau khi xây dựng, bạn sẽ thấy thuộc tính package
được đặt thành mã ứng dụng. Trên thực tế, Cửa hàng Google Play và nền tảng Android sẽ tìm thuộc tính package
của tệp kê khai sáp nhập để xác định ứng dụng của bạn.
Thay đổi không gian tên để kiểm thử
Không gian tên mặc định cho các nhóm tài nguyên androidTest
và test
là không gian tên chính, trong đó có .test
được thêm vào ở cuối. Ví dụ: nếu thuộc tính namespace
trong tệp build.gradle
là com.example.myapp
, thì không gian tên để kiểm thử sẽ được đặt theo mặc định là com.example.myapp.test
.
Để thay đổi không gian tên cho việc kiểm thử, hãy sử dụng thuộc tính testNamespace
như hiển thị trong đoạn mã sau:
Kotlin
android { namespace = "com.example.myapp" testNamespace = "com.example.mytestapp" ... }
Groovy
android { namespace "com.example.myapp" testNamespace "com.example.mytestapp" ... }
Thận trọng: Đừng đặt testNamespace
và namespace
thành cùng một giá trị, nếu không sẽ xảy ra xung đột không gian tên.
Để tìm hiểu thêm về việc kiểm thử, hãy xem bài viết Kiểm thử ứng dụng trên Android.