Wtyczka Androida do obsługi Gradle w wersji 2.2.0 (wrzesień 2016 r.)
- Zależności:
- 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 plikugradle.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 kod 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 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 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 zbuildTypes.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ę nafalse
w elemencie<application>
w manifeście aplikacji, Gradle spakuje nieskompresowane i wyrównane wersje bibliotek natywnych w pliku 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
iapplicationIdSuffix
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
natrue
. - 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 DSLjavaCompileOptions.annotationProcessorOptions {}
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 }
- 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
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
- Jack obsługuje teraz pokrycie testami Jacoco, gdy ustawisz
-
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. |