Định cấu hình cho mô-đun ứng dụng

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Trang này mô tả các tùy chọn cài đặt ứng dụng hữu ích trong tệp build.gradle cấp mô-đun mà bạn có thể muốn bật/tắt. 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, chúng tôi còn mô tả cách để bạn:

  • Thay đổi ID ứng dụng cho các cấu hình xây dựng khác nhau.
  • Điều chỉnh không gian tên một cách an toàn, độc lập với ID ứng dụng.

Đặt ID ứng dụng

Mỗi ứng dụng Android đều có một ID ứng dụng duy nhất như kiểu tên gói Java, chẳng hạn như com.example.myapp. ID 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. Sau khi phát hành ứng dụng, bạn không được thay đổi ID ứng dụng. Nếu bạn muốn tải một phiên bản mới của ứng dụng lên, ID ứng dụng đó (và giấy chỉ mà bạn ký với ứng dụng đó) phải giống với lần phát hành ban đầu — nếu bạn thay đổi ID ứng dụng, Cửa hàng Google Play sẽ hiểu rằng phiên bản được tải lên là một ứng dụng hoàn toàn khác.

ID ứng dụng của bạn được xác định bởi thuộc tính applicationId trong tệp build.gradle của mô-đun, như minh họa dưới đây:

Groovy

android {
    defaultConfig {
        applicationId "com.example.myapp"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    ...
}

Kotlin

android {
    defaultConfig {
        applicationId = "com.example.myapp"
        minSdk = 15
        targetSdk = 24
        versionCode = 1
        versionName = "1.0"
    }
    ...
}

Mặc dù ID ứng dụng giống kiểu tên gói Java truyền thống (không gian tên mã của bạn), các quy tắc đặt tên cho ID ứng dụng sẽ hạn chế hơn một chút:

  • Tên này 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 bao gồm cả chữ và 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 theo kiểu Java 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 hai thuộc tính một cách độc lập, nhưng chúng tôi không khuyến khích điều này.

Dưới đây là đề xuất của chúng tôi khi bạn cài đặt ID ứng dụng:

  • Giữ nguyên ID ứng dụng như không gian tên. Sự khác biệt giữa hai thuộc tính đôi khi có thể gây nhầm lẫn, nhưng nếu bạn giữ nguyên hai thuộc tính thì bạn không cần phải lo lắng.
  • Đừng thay đổi ID ứng dụng sau khi phát hành ứng dụng. Nếu bạn thay đổi ID ứng dụng, Cửa hàng Google Play sẽ hiểu rằng ứng dụng được tải lên tiếp sau đó là một ứng dụng mới.
  • Xác định rõ ID ứng dụng. Nếu không xác định rõ ID ứng dụng bằng cách sử dụng thuộc tính applicationId, ID đó 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 ID ứng dụng, việc này thường không phải ý định của bạn.

Lưu ý: ID ứng dụng từng được liên kết trực tiếp với tên gói của mã; vì vậy, một số API của Android sử dụng từ khóa "tên gói" trong tên phương thức và tên thông số, nhưng đây thực chất là ID ứng dụng của bạn. Ví dụ: phương thức Context.getPackageName() trả về ID ứng dụng của bạn. Bạn không cần phải chia sẻ tên gói thực của mã bên ngoài ID ứng dụng của bạn.

Chú ý: Nếu bạn đang sử dụng WebView, hãy cân nhắc sử dụng tên gói làm tiền tố trong ID ứng dụng; nếu không, bạn có thể gặp sự cố như mô tả trong số phát hành 211768.

Thay đổi ID ứng dụng để kiểm thử

Theo mặc định, các công cụ xây dựng áp dụng một ID ứng dụng cho APK kiểm thử đo lường bằng cách sử dụng ID ứng dụng cho biến thể xây dựng đã cho, kèm theo .test. Ví dụ: APK kiểm thử cho biến thể xây dựng com.example.myapp.free có ID ứng dụng là com.example.myapp.free.test.

Mặc dù không cần thiết, bạn có thể thay đổi ID ứ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, được sử dụng làm tên gói Java cho các lớp RBuildConfig đượ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 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 theo kiểu Java mà bạn chọn khi tạo dự án.

android {
    namespace 'com.example.myapp'
    ...
}

Trong khi tạo ứng dụng của bạn thành gói ứng dụng cuối cùng (APK), công cụ xây dựng Android sẽ sử dụng vùng chứa 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 xây 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 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. Tất nhiên, 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 từ thuộc tính namespace.

Để có quy trình làm việc đơn giản hơn, bạn nên giữ nguyên không gian tên giống như mã ứng dụng theo mặc định.

Thay đổi không gian tên

Để đơn giản hóa, bạn nên cố gắng giữ nguyên vùng chứa tên và mã ứng dụng theo mặc định. Tuy nhiên, bạn có thể cần phải thay đổi không gian tên tại một thời điểm nào đó nếu bạn đang 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, bạn có thể 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 của mô-đun) độc lập với 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 Thiết lập mã ứng dụng.

Nếu bạn đặt các tên khác nhau cho namespace và Gradle applicationId, hãy nhớ 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 ở cuối bản dựng. Vì vậy, nếu bạn kiểm tra tệp AndroidManifest.xml của mình sau khi xây dựng, bạn không phải ngạc nhiên tại sao thuộc tính package lại được đặt thành ID ứng dụng. Cửa hàng Google Play và nền tảng Android trên thực tế đã tìm cách xác định ứng dụng của bạn thông qua thuộc tính package của tệp kê khai sáp nhập.

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 androidTesttest 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.gradlecom.example.myapp, thì không gian tên thử nghiệm 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ư được hiển thị trong đoạn mã sau:

android {
    namespace 'com.example.myapp'
    testNamespace 'com.example.mytestapp'
    ...
}

Thận trọng: Không đặt testNamespacenamespace thành cùng một giá trị, nếu không sẽ có xung đột về không gian tên.

Để tìm hiểu thêm về kiểm thử, vui lòng xem nội dung Kiểm thử ứng dụng trên Android.