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.
Trình bổ trợ Android cho Gradle 2.2.0 (tháng 9 năm 2016)
- Phần phụ thuộc:
|
Phiên bản tối thiểu |
Phiên bản mặc định |
Lưu ý |
Gradle |
2.14.1 |
2.14.1 |
Để tìm hiểu thêm, hãy xem phần cập nhật Gradle. |
Công cụ tạo SDK |
23.0.2 |
23.0.2 |
Cài đặt hoặc định cấu hình Công cụ tạo SDK. |
- Mới:
-
- Sử dụng Gradle 2.14.1, trong đó có các điểm cải thiện hiệu suất và tính năng mới, đồng thời khắc phục một lỗ hổng bảo mật cho phép đẩy báo cáo đặc quyền cục bộ lên khi sử dụng trình nền Gradle. Để biết thêm chi tiết, hãy xem Ghi chú phát hành Gradle.
- Nhờ có DSL
externalNativeBuild {}
, Gradle hiện cho phép bạn liên kết đến các nguồn gốc và biên dịch thư viện gốc bằng CMake hoặc ndk-build. Sau khi xây dựng các thư viện gốc, Gradle sẽ đóng gói vào APK. Để tìm hiểu thêm về cách sử dụng CMake và ndk-build bằng Gradle, hãy đọc bài viết Bổ sung mã C và C++ vào dự án.
- Khi bạn chạy một bản dựng từ dòng lệnh, Gradle hiện sẽ cố gắng tự động tải mọi thành phần hoặc bản cập nhật SDK bị thiếu mà dự án đang cần.
Để tìm hiểu thêm, hãy đọc phần Tự động tải các gói còn thiếu bằng Gradle.
- Tính năng thử nghiệm mới của hoạt động lưu vào bộ nhớ đệm cho phép Gradle tăng tốc thời gian xây dựng khi chuyển sang định dạng .dex, lưu trữ và tái sử dụng những phiên bản chuyển sang định dạng .dex của thư viện. Để tìm hiểu thêm về cách sử dụng tính năng thử nghiệm này, hãy đọc hướng dẫn Bộ nhớ đệm bản dựng.
- Cải thiện hiệu suất bản dựng bằng cách sử dụng một quy trình đóng gói mặc định mới có khả năng nén, ký và căn chỉnh nén trong một tác vụ. Bạn có thể quay lại sử dụng các công cụ đóng gói cũ bằng cách bổ sung
android.useOldPackaging=true
vào tệp gradle.properties
. Khi sử dụng công cụ đóng gói mới, bạn không thể thực hiện tác vụ zipalignDebug
. Tuy nhiên, bạn có thể tự tạo tác vụ này bằng cách gọi phương thức createZipAlignTask(String taskName, File inputFile, File
outputFile)
.
- Tính năng ký APK hiện sử dụng Lược đồ chữ ký APK phiên bản 2 cùng tính năng ký JAR truyền thống. Tất cả các nền tảng Android đều chấp nhận APK được tạo từ tính năng trên. Mọi thay đổi đối với những APK này sau khi ký sẽ làm mất hiệu lực chữ ký phiên bản 2 và ngăn không cho cài đặt trên thiết bị. Để vô hiệu hoá tính năng này, hãy thêm đoạn mã sau vào tệp
build.gradle
cấp mô-đun:
Groovy
android {
...
signingConfigs {
config {
...
v2SigningEnabled false
}
}
}
Kotlin
android {
...
signingConfigs {
create("config") {
...
v2SigningEnabled = false
}
}
}
- Đối với các bản dựng multidex, hiện bạn có thể sử dụng quy tắc ProGuard để xác định các lớp Gradle nên tổng hợp thành tệp DEX chính của ứng dụng. Do hệ thống Android tải tệp DEX chính trước khi khởi động ứng dụng, bạn có thể ưu tiên một số lớp nhất định khi khởi động bằng cách biên dịch các tệp này thành tệp DEX chính. Sau khi bạn tạo tệp cấu hình ProGuard dành riêng cho tệp DEX chính, hãy truyền đường dẫn của tệp cấu hình đến Gradle bằng
buildTypes.multiDexKeepProguard
. Thao tác sử dụng DSL này khác với việc sử dụng buildTypes.proguardFiles
(cung cấp quy tắc ProGuard chung cho ứng dụng) và không chỉ định các lớp cho tệp DEX chính.
- Hỗ trợ thêm tính năng cho cờ
android:extractNativeLibs
, giúp giảm kích thước ứng dụng khi bạn cài đặt trên thiết bị. Khi bạn thiết lập cờ này thành false
trong phần tử <application>
của tệp kê khai ứng dụng, các gói Gradle sẽ đóng gói các phiên bản điều chỉnh và không nén của thư viện gốc bằng APK. Thao tác này ngăn PackageManager
sao chép các thư viện gốc từ APK sang hệ thống tệp của thiết bị trong quá trình cài đặt và bổ sung lợi ích rút gọn cập nhật delta ứng dụng.
- Hiện bạn có thể chỉ định
versionNameSuffix
và applicationIdSuffix
cho các phiên bản sản phẩm. (Vấn đề 59614)
-
Các thay đổi:
-
-
getDefaultProguardFile
hiện trả về các tệp ProGuard mặc định mà Trình bổ trợ Android cho Gradle cung cấp và không còn dùng các tệp này trong SDK Android.
- Cải thiện hiệu suất và các tính năng của trình biên dịch Jack:
- Jack hiện hỗ trợ phạm vi kiểm thử của Jacoco khi thiết lập
testCoverageEnabled
thành true
.
- Cải thiện tính năng hỗ trợ cho trình xử lý chú giải. Trình xử lý chú giải trên classpath, chẳng hạn như bất kỳ phần phụ thuộc
compile
nào, sẽ tự động được áp dụng cho bản dựng. Bạn cũng có thể chỉ định trình xử lý chú giải trong bản dựng và truyền các đối số bằng cách sử dụng DSL javaCompileOptions.annotationProcessorOptions {}
trong tệp build.gradle
cấp mô-đun:
Groovy
android {
...
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
className 'com.example.MyProcessor'
// Arguments are optional.
arguments = [ foo : 'bar' ]
}
}
}
}
Kotlin
android {
...
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
className = "com.example.MyProcessor"
// Arguments are optional.
arguments(mapOf(foo to "bar"))
}
}
}
}
Nếu bạn muốn áp dụng trình xử lý chú giải vào thời gian biên dịch nhưng không đưa tính năng này vào APK, hãy sử dụng phạm vi phần phụ thuộc annotationProcessor
:
Groovy
dependencies {
compile 'com.google.dagger:dagger:2.0'
annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
// or use buildVariantAnnotationProcessor to target a specific build variant
}
Kotlin
dependencies {
implementation("com.google.dagger:dagger:2.0")
annotationProcessor("com.google.dagger:dagger-compiler:2.0")
// or use buildVariantAnnotationProcessor to target a specific build variant
}
Đối với danh sách các thông số bạn có thể thiết lập, hãy chạy lệnh sau từ
dòng lệnh:
java -jar /build-tools/jack.jar --help-properties
- Theo mặc định, nếu kích thước vùng nhớ khối xếp của trình nền Gradle tối thiểu là 1.5 GB, thì giờ đây, Jack sẽ chạy theo quy trình tương tự như Gradle. Để điều chỉnh kích thước vùng nhớ khối xếp trình nền, hãy thêm nội dung sau vào tệp
gradle.properties
:
# This sets the daemon heap size to 1.5GB.
org.gradle.jvmargs=-Xmx1536M
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-08-27 UTC.
[null,null,["Cập nhật lần gần đây nhất: 2025-08-27 UTC."],[],[],null,["\u003cbr /\u003e\n\nAndroid Gradle Plugin 2.2.0 (September 2016)\n\nDependencies:\nNew:\n:\n - Uses Gradle 2.14.1, which includes performance improvements and new features, and fixes a security vulnerability that allows local privilege escalation when using the Gradle daemon. For more details, see the [Gradle release notes](https://docs.gradle.org/2.14.1/release-notes).\n - Using the [`externalNativeBuild {}`](https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.ExternalNativeBuild.html) DSL, Gradle now lets you link to your native sources and compile native libraries using CMake or ndk-build. After building your native libraries, Gradle packages them into your APK. To learn more about using CMake and ndk-build with Gradle, read [Add C and C++ Code to Your\n Project](/studio/projects/add-native-code).\n - When you [run a\n build from the command line](/studio/build/building-cmdline), Gradle now attempts to auto-download any missing SDK components or updates that your project depends on. To learn more, read [Auto-download\n missing packages with Gradle](/studio/intro/update#download-with-gradle).\n - A new experimental caching feature lets Gradle speed up build times by pre-dexing, storing, and reusing the pre-dexed versions of your libraries. To learn more about using this experimental feature, read the [Build\n Cache](/studio/build/build-cache) guide.\n - Improves build performance by adopting a new default packaging pipeline which handles zipping, signing, and [zipaligning](/studio/command-line/zipalign) in one task. You can revert to using the older packaging tools by adding `android.useOldPackaging=true` to your `gradle.properties` file. While using the new packaging tool, the `zipalignDebug` task is not available. However, you can create one yourself by calling the `createZipAlignTask(String taskName, File inputFile, File\n outputFile)` method.\n - APK signing now uses [APK Signature Scheme\n v2](/about/versions/nougat/android-7.0#apk_signature_v2) in addition to traditional JAR signing. All Android platforms accept the resulting APKs. Any modification to these APKs after signing invalidates their v2 signatures and prevents installation on a device. To disable this feature, add the following to your module-level `build.gradle` file: \n\n Groovy \n\n ```groovy\n android {\n ...\n signingConfigs {\n config {\n ...\n v2SigningEnabled false\n }\n }\n }\n \n ```\n\n Kotlin \n\n ```kotlin\n android {\n ...\n signingConfigs {\n create(\"config\") {\n ...\n v2SigningEnabled = false\n }\n }\n }\n \n ```\n - For multidex builds, you can now use ProGuard rules to determine which classes Gradle should compile into your app's *main* DEX file. Because the Android system loads the main DEX file first when starting your app, you can prioritize certain classes at startup by compiling them into the main DEX file. After you create a ProGuard configuration file specifically for your main DEX file, pass the configuration file's path to Gradle using [buildTypes.multiDexKeepProguard](https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.BuildType.html#com.android.build.gradle.internal.dsl.BuildType:multiDexKeepProguard). Using this DSL is different from using [`buildTypes.proguardFiles`](https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.BuildType.html#com.android.build.gradle.internal.dsl.BuildType:proguardFiles(java.lang.Object[])), which provides general ProGuard rules for your app and does not specify classes for the main DEX file.\n - Adds support for the `android:extractNativeLibs` flag, which can reduce the size of your app when you install it on a device. When you set this flag to `false` in the [`\u003capplication\u003e`](/guide/topics/manifest/application-element) element of your app manifest, Gradle packages uncompressed and aligned versions of your native libraries with your APK. This prevents [`PackageManager`](/reference/android/content/pm/PackageManager) from copying out your native libraries from the APK to the device's file system during installation and has the added benefit of making delta updates of your app smaller.\n - You can now specify [`versionNameSuffix`](https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.ProductFlavor.html#com.android.build.gradle.internal.dsl.ProductFlavor:versionNameSuffix) and [`applicationIdSuffix`](https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.ProductFlavor.html#com.android.build.gradle.internal.dsl.ProductFlavor:applicationIdSuffix) for product flavors. ([Issue 59614](http://b.android.com/59614))\n\n\nChanges:\n:\n - `getDefaultProguardFile` now returns the default ProGuard files that Android plugin for Gradle provides and no longer uses the ones in the Android SDK.\n - Improved Jack compiler performance and features:\n - Jack now supports Jacoco test coverage when setting [testCoverageEnabled](https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.BuildType.html#com.android.build.gradle.internal.dsl.BuildType:testCoverageEnabled) to `true`.\n - Improved support for annotation processors. Annotation processors on your classpath, such as any `compile` dependencies, are automatically applied to your build. You can also specify an annotation processor in your build and pass arguments by using the [`javaCompileOptions.annotationProcessorOptions {}`](https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.AnnotationProcessorOptions.html) DSL in your module-level `build.gradle` file: \n\n Groovy \n\n ```groovy\n android {\n ...\n defaultConfig {\n ...\n javaCompileOptions {\n annotationProcessorOptions {\n className 'com.example.MyProcessor'\n // Arguments are optional.\n arguments = [ foo : 'bar' ]\n }\n }\n }\n }\n \n ```\n\n Kotlin \n\n ```kotlin\n android {\n ...\n defaultConfig {\n ...\n javaCompileOptions {\n annotationProcessorOptions {\n className = \"com.example.MyProcessor\"\n // Arguments are optional.\n arguments(mapOf(foo to \"bar\"))\n }\n }\n }\n }\n \n ```\n\n\n If you want to apply an annotation processor at compile\n time but not include it in your APK, use the\n `annotationProcessor` dependency scope: \n\n Groovy \n\n ```groovy\n dependencies {\n compile 'com.google.dagger:dagger:2.0'\n annotationProcessor 'com.google.dagger:dagger-compiler:2.0'\n // or use buildVariantAnnotationProcessor to target a specific build variant\n }\n \n ```\n\n Kotlin \n\n ```kotlin\n dependencies {\n implementation(\"com.google.dagger:dagger:2.0\")\n annotationProcessor(\"com.google.dagger:dagger-compiler:2.0\")\n // or use buildVariantAnnotationProcessor to target a specific build variant\n }\n \n ```\n - For a list of parameters you can set, run the following from the command line: \n\n ```\n java -jar /build-tools/jack.jar --help-properties\n ```\n - By default, if the Gradle daemon's heap size is at least 1.5 GB, Jack now runs in the same process as Gradle. To adjust the daemon heap size, add the following to your `gradle.properties` file:\n\n \u003cbr /\u003e\n\n ```\n # This sets the daemon heap size to 1.5GB.\n org.gradle.jvmargs=-Xmx1536M\n ```\n\n \u003cbr /\u003e\n\n\n\u003cbr /\u003e"]]