Wtyczka Androida do obsługi Gradle 2.2.0 (wrzesień 2016 r.)
- Zależności:
- Nowość:
-
- Używa Gradle 2.14.1, który zawiera ulepszenia wydajności i nowe funkcje oraz naprawia lukę w zabezpieczeniach umożliwiającą lokalną eskalację uprawnień podczas korzystania z demona Gradle. Więcej informacji znajdziesz w informacjach o wersji Gradle.
- Za pomocą
externalNativeBuild {}
DSL Gradle możesz teraz łączyć natywne źródła i kompilować natywne biblioteki 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 w Gradle znajdziesz w artykule Dodawanie kodu C i C++ do projektu. - Gdy uruchamiasz kompilację z poziomu wiersza poleceń, Gradle próbuje 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 przyspieszenie czasu kompilacji Gradle przez wstępną dekoderyzację, przechowywanie i ponowne używanie zdekodowanych wersji bibliotek. Aby dowiedzieć się więcej o korzystaniu z tej funkcji eksperymentalnej, przeczytaj przewodnik Build Cache.
- Zwiększa wydajność kompilacji dzięki zastosowaniu nowego domyślnego potoku pakowania, który obsługuje kompresowanie, podpisywanie i wyrównywanie pakietów w ramach jednego zadania. Możesz wrócić do korzystania ze starszych narzędzi do pakowania, dodając plik
android.useOldPackaging=true
do plikugradle.properties
. Gdy używasz nowego narzędzia do pakowania, zadaniezipalignDebug
jest niedostępne. Możesz jednak utworzyć go samodzielnie, wywołując metodęcreateZipAlignTask(String taskName, File inputFile, File outputFile)
. - Podpisywanie plików APK odbywa się teraz za pomocą schematu podpisu plików APK w wersji 2, a nie tylko tradycyjnego podpisywania plików JAR. Wszystkie platformy Androida akceptują utworzone pliki APK. Wszelkie zmiany w tych plikach APK po podpisaniu unieważniają ich podpisy v2 i uniemożliwiają instalację na urządzeniu. Aby wyłączyć tę funkcję, dodaj do pliku
build.gradle
na poziomie modułu następujący kod:Groovy
android { ... signingConfigs { config { ... v2SigningEnabled false } } }
Kotlin
android { ... signingConfigs { create("config") { ... v2SigningEnabled = false } } }
- W przypadku kompilacji multidex możesz teraz używać reguł ProGuard do określania, które klasy Gradle powinien skompilować do głównego pliku DEX aplikacji. Ponieważ system Android podczas uruchamiania aplikacji najpierw wczytuje 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 ProGuarda specjalnie dla głównego pliku DEX prześlij ścieżkę do tego pliku do Gradle za pomocą polecenia
buildTypes.multiDexKeepProguard
. Korzystanie z tego języka opisu jest inne niż korzystanie zbuildTypes.proguardFiles
, który zawiera ogólne reguły ProGuard dla aplikacji i nie określa klas w głównym 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 wartośćfalse
w elemencie<application>
w manifeście aplikacji, Gradle skompresuje i zgodnie z wymaganiami spakowałby nieskompresowane wersje bibliotek natywnych z pliku APK. Dzięki temuPackageManager
nie będzie kopiować natywnych bibliotek z pliku APK do systemu plików urządzenia podczas instalacji. Dodatkowo zmniejszy to rozmiar aktualizacji delta aplikacji. - Możesz teraz określić
versionNameSuffix
iapplicationIdSuffix
dla wersji produktu. (Problem 59614)
- Zmiany:
-
-
getDefaultProguardFile
zwraca teraz domyślne pliki ProGuarda, które udostępnia wtyczka Androida do Gradle, i nie używa już plików z Android SDK. - Ulepszone działanie i funkcje kompilatora Jack:
- Jack obsługuje teraz pokrycie testu Jacoco, gdy parametr
testCoverageEnabled
ma wartośćtrue
. - Ulepszona obsługa procesorów adnotacji. Procesory adnotacji w Twoim classpath, takie jak zależności
compile
, są automatycznie stosowane w Twoim kompilacji. Możesz też określić procesor adnotacji w kompilacji i przekazać argumenty, używającjavaCompileOptions.annotationProcessorOptions {}
DSL w plikubuild.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 uzyskać listę parametrów, które możesz skonfigurować, uruchom z poziomu wiersza poleceń to polecenie:
java -jar /build-tools/jack.jar --help-properties
- Jack obsługuje teraz pokrycie testu Jacoco, gdy parametr
- Domyślnie, jeśli rozmiar stosu demona Gradle wynosi co najmniej 1,5 GB, Jack działa teraz w tym samym procesie co Gradle. Aby dostosować rozmiar stosu demona, dodaj do pliku
gradle.properties
te informacje:# This sets the daemon heap size to 1.5GB. org.gradle.jvmargs=-Xmx1536M
-
Minimalna wersja | Wersja domyślna | Uwagi | |
---|---|---|---|
Gradle | 2.14.1 | 2.14.1 | Więcej informacji znajdziesz w artykule Aktualizowanie Gradle. |
Narzędzia do kompilowania pakietu SDK | 23.0.2 | 23.0.2 | Zainstaluj lub skonfiguruj narzędzia do kompilowania pakietu SDK. |