Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Wtyczka Androida do obsługi Gradle w wersji 2.2.0 (wrzesień 2016 r.)
- Zależności:
|
Wersja minimalna |
Wersja domyślna |
Uwagi |
Gradle |
2.14.1 |
2.14.1 |
Więcej informacji znajdziesz w sekcji Aktualizowanie Gradle. |
SDK Build Tools |
23.0.2 |
23.0.2 |
Zainstaluj lub skonfiguruj narzędzia do kompilacji pakietu SDK. |
- Nowość:
-
- Korzysta z Gradle w wersji 2.14.1, która zawiera ulepszenia wydajności i nowe funkcje oraz usuwa lukę w zabezpieczeniach umożliwiającą lokalne podniesienie uprawnień podczas korzystania z demona Gradle. Więcej informacji znajdziesz w
informacjach o wersji Gradle.
- Korzystając z języka
externalNativeBuild {}
DSL, Gradle umożliwia teraz łączenie się z natywnymi źródłami i kompilowanie bibliotek natywnych za pomocą CMake lub ndk-build. Po utworzeniu bibliotek natywnych Gradle pakuje je do pliku APK. Więcej informacji o używaniu CMake i ndk-build z Gradle znajdziesz w artykule Dodawanie do projektu kodu w C i C++.
- Gdy uruchamiasz kompilację z poziomu wiersza poleceń, Gradle próbuje teraz automatycznie pobrać brakujące komponenty pakietu SDK lub aktualizacje, od których zależy Twój projekt.
Więcej informacji znajdziesz w artykule Automatyczne pobieranie brakujących pakietów za pomocą Gradle.
- Nowa eksperymentalna funkcja buforowania umożliwia Gradle przyspieszenie kompilacji przez wstępne indeksowanie, przechowywanie i ponowne wykorzystywanie wstępnie indeksowanych wersji bibliotek. Więcej informacji o korzystaniu z tej eksperymentalnej funkcji znajdziesz w przewodniku Build Cache.
- Zwiększa wydajność kompilacji dzięki zastosowaniu nowego domyślnego potoku pakowania, który w ramach jednego zadania obsługuje kompresję, podpisywanie i wyrównywanie. Możesz wrócić do starszych narzędzi do pakowania, dodając
android.useOldPackaging=true
do pliku gradle.properties
. Podczas korzystania z nowego narzędzia do pakowaniazipalignDebug
nie jest dostępna. Możesz jednak utworzyć własną, wywołując metodę createZipAlignTask(String taskName, File inputFile, File
outputFile)
.
- Podpisywanie plików APK odbywa się teraz przy użyciu schematu podpisu APK w wersji 2, a także tradycyjnego podpisywania plików JAR. Wszystkie platformy Androida akceptują powstałe pliki APK. Wszelkie modyfikacje tych plików APK po podpisaniu unieważniają ich podpisy w wersji 2 i uniemożliwiają instalację na urządzeniu. Aby wyłączyć tę funkcję, dodaj ten ciąg do pliku
build.gradle
na poziomie modułu:
Groovy
android {
...
signingConfigs {
config {
...
v2SigningEnabled false
}
}
}
Kotlin
android {
...
signingConfigs {
create("config") {
...
v2SigningEnabled = false
}
}
}
- W przypadku kompilacji multidex możesz teraz używać reguł ProGuard, aby określać, które klasy Gradle ma kompilować do pliku DEX main aplikacji. Ponieważ system Android podczas uruchamiania aplikacji wczytuje najpierw główny plik DEX, możesz nadać priorytet niektórym klasom podczas uruchamiania, kompilując je w głównym pliku DEX. Po utworzeniu pliku konfiguracji ProGuard specjalnie dla głównego pliku DEX przekaż ścieżkę pliku konfiguracji do Gradle za pomocą
buildTypes.multiDexKeepProguard
. Korzystanie z tego DSL-a różni się od korzystania z
buildTypes.proguardFiles
, które udostępnia ogólne reguły ProGuard dla aplikacji i nie określa klas dla głównego pliku DEX.
- Dodaje obsługę flagi
android:extractNativeLibs
, która może zmniejszyć rozmiar aplikacji podczas instalowania jej na urządzeniu. Gdy ustawisz tę flagę na false
w elemencie
<application>
w manifeście aplikacji, Gradle spakuje nieskompresowane i wyrównane wersje bibliotek natywnych z plikiem APK. Zapobiega to kopiowaniu bibliotek natywnych z pliku APK do systemu plików urządzenia podczas instalacji i dodatkowo zmniejsza rozmiar aktualizacji różnicowych aplikacji.PackageManager
- Możesz teraz określić
versionNameSuffix
i
applicationIdSuffix
dla wersji produktu. (Problem 59614)
-
Zmiany:
-
-
getDefaultProguardFile
zwraca teraz domyślne pliki ProGuard dostarczane przez wtyczkę Androida do Gradle i nie używa już plików z pakietu SDK Androida.
- Ulepszona wydajność i funkcje kompilatora Jack:
- Jack obsługuje teraz pokrycie testami Jacoco, gdy ustawisz
testCoverageEnabled
na true
.
- Ulepszona obsługa procesorów adnotacji. Procesory adnotacji na ścieżce klas, takie jak zależności
compile
, są automatycznie stosowane w kompilacji. Możesz też określić procesor adnotacji w kompilacji i przekazać argumenty za pomocą języka DSL
javaCompileOptions.annotationProcessorOptions {}
w pliku build.gradle
na poziomie modułu:
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"))
}
}
}
}
Jeśli chcesz zastosować procesor adnotacji w czasie kompilacji, ale nie chcesz go uwzględniać w pliku APK, użyj zakresu zależności 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
}
Aby wyświetlić listę parametrów, które możesz ustawić, uruchom to polecenie z wiersza poleceń:
java -jar /build-tools/jack.jar --help-properties
- Domyślnie, jeśli rozmiar sterty demona Gradle wynosi co najmniej 1,5 GB, Jack działa w tym samym procesie co Gradle. Aby dostosować rozmiar sterty demona, dodaj do pliku
gradle.properties
te informacje:
# This sets the daemon heap size to 1.5GB.
org.gradle.jvmargs=-Xmx1536M
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-08-27 UTC.
[null,null,["Ostatnia aktualizacja: 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"]]