Wtyczka Androida do obsługi Gradle 2.2.0 (wrzesień 2016 r.)
- Zależności:
-
- Gradle w wersji 2.14.1 lub nowszej.
- Narzędzia do tworzenia w wersji 23.0.2 lub nowszej.
- Nowość:
-
- Korzysta z Gradle 2.14.1, która zawiera ulepszenia w zakresie wydajności i nowe funkcje oraz eliminuje lukę w zabezpieczeniach, która umożliwia lokalne eskalację uprawnień podczas korzystania z demona Gradle. Więcej informacji znajdziesz w informacjach o wersji Gradle.
- Korzystając z DSL
externalNativeBuild {}
, Gradle umożliwia teraz tworzenie połączeń ze źródłami natywnymi i kompilowanie bibliotek natywnych za pomocą CMake lub ndk-build. Po utworzeniu bibliotek natywnych Gradle zapakuje 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 teraz automatycznie pobrać brakujące komponenty lub aktualizacje pakietu SDK, 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 deksowanie, przechowywanie i ponowne wykorzystywanie wstępnie przygotowanych wersji bibliotek. Więcej informacji o korzystaniu z tej eksperymentalnej funkcji znajdziesz w przewodniku Build Cache.
- Zwiększa wydajność kompilacji przez przyjęcie nowego domyślnego potoku tworzenia pakietów, który zajmuje się kompresowaniem, podpisywaniem i wyrównywaniem ZIP w ramach jednego zadania. Aby wrócić do używania starszych narzędzi do tworzenia pakietów, dodaj
android.useOldPackaging=true
do plikugradle.properties
. Gdy korzystasz z nowego narzędzia do tworzenia pakietów, 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 oprócz tradycyjnego podpisywania JAR używa teraz schematu podpisu pliku APK w wersji 2. Wszystkie platformy Androida akceptują wygenerowane pliki APK. Każda modyfikacja tych plików APK po podpisaniu powoduje unieważnienie ich podpisów w wersji 2 i uniemożliwienie instalacji na urządzeniu. Aby wyłączyć tę funkcję, dodaj ten fragment do pliku
build.gradle
na poziomie modułu:Odlotowy
android { ... signingConfigs { config { ... v2SigningEnabled false } } }
Kotlin
android { ... signingConfigs { create("config") { ... v2SigningEnabled = false } } }
- W przypadku kompilacji multidex za pomocą reguł ProGuard możesz teraz określać, które klasy Gradle ma skompilować w głównym pliku DEX aplikacji. System Android najpierw wczytuje główny plik DEX przy uruchamianiu aplikacji, dlatego możesz nadać priorytet określonym klasom podczas uruchamiania, skompilując je w głównym pliku DEX. Gdy utworzysz plik konfiguracji ProGuard specjalnie dla głównego pliku DEX, przekaż ścieżkę pliku konfiguracji do Gradle za pomocą
buildTypes.multiDexKeepProguard
. Używanie tego DSL różni się od użyciabuildTypes.proguardFiles
, który udostępnia ogólne reguły ProGuard aplikacji i nie określa klas głównego pliku DEX. - Dodaje obsługę flagi
android:extractNativeLibs
, która może zmniejszać rozmiar aplikacji instalowanej na urządzeniu. Gdy ustawisz tę flagę nafalse
w elemencie<application>
pliku manifestu aplikacji, Gradle pakietuje nieskompresowane i dopasowane wersje bibliotek natywnych do Twojego pliku APK. Zapobiega to kopiowaniu przezPackageManager
bibliotek natywnych z pliku APK do systemu plików urządzenia podczas instalacji, a dodatkową zaletą jest to, że aktualizacje delta aplikacji są mniejsze. - Teraz możesz określić
versionNameSuffix
iapplicationIdSuffix
dla smaków produktów. (Numer 59614)
- Zmiany:
-
-
getDefaultProguardFile
zwraca teraz domyślne pliki ProGuard udostępniane przez wtyczkę do Androida dla Gradle i nie korzysta już z plików z pakietu Android SDK. - Ulepszona wydajność i funkcje kompilatora Jack:
- Jack obsługuje teraz zasięg testu Jacoco przy ustawieniu
testCoverageEnabled
natrue
. - Ulepszona obsługa procesorów adnotacji. Procesory adnotacji w ścieżce klasy, takie jak zależności
compile
, są automatycznie stosowane do kompilacji. Procesor adnotacji możesz też określić w kompilacji i argumentach przekazywania, używając DSLjavaCompileOptions.annotationProcessorOptions {}
w plikubuild.gradle
na poziomie modułu:Odlotowy
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 podczas kompilacji, ale nie chcesz go uwzględnić w pliku APK, użyj zakresu zależności
annotationProcessor
:Odlotowy
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żna ustawić, uruchom to polecenie z wiersza poleceń:
java -jar /build-tools/jack.jar --help-properties
- Jack obsługuje teraz zasięg testu Jacoco przy ustawieniu
- 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 demonów, dodaj do pliku
gradle.properties
ten fragment:# This sets the daemon heap size to 1.5GB. org.gradle.jvmargs=-Xmx1536M
-