Wtyczka Androida do obsługi Gradle w wersji 4.2.0 (marzec 2021 r.)
Zgodność
Wersja minimalna | Wersja domyślna | Uwagi | |
---|---|---|---|
Gradle | 6.7.1 | Nie dotyczy | Więcej informacji znajdziesz w artykule na temat aktualizowania Gradle. |
Narzędzia do kompilowania pakietu SDK | 30.0.2 | 30.0.2 | Zainstaluj lub skonfiguruj narzędzia SDK Build Tools. |
NDK | Nie dotyczy | 21.4.7075529 | Zainstaluj lub skonfiguruj inną wersję NDK. |
Nowe funkcje
Ta wersja wtyczki Androida do obsługi Gradle zawiera poniższe nowe funkcje.
Domyślnie wersja języka Java 8
Począwszy od wersji 4.2, AGP będzie domyślnie używać poziomu języka Java 8. Java 8 zapewnia dostęp do szeregu nowszych funkcji językowych, w tym do lambda wyrażeń, odwołań do metod i statycznych metod interfejsu. Pełna lista obsługiwanych funkcji znajdziesz w dokumentacji Java 8.
Aby zachować stare zachowanie, określ Javę 7 jawnie na poziomie modułu
Plik build.gradle.kts
lub build.gradle
:
// build.gradle
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
// For Kotlin projects, compile to Java 6 instead of 7
kotlinOptions {
jvmTarget = "1.6"
}
}
// build.gradle.kts
android {
...
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}
// For Kotlin projects, compile to Java 6 instead of 7
kotlinOptions {
jvmTarget = "1.6"
}
}
Nowy kompilator zasobów JVM
Nowy kompilator zasobów JVM w pliku Android Gradle plugin 4.2 zastępuje części kompilatora zasobów AAPT2, co może poprawić wydajność kompilacji, zwłaszcza na komputerach z systemem Windows. Nowy kompilator zasobów JVM jest domyślnie włączony.
Obsługa podpisywania w wersji 3 i 4
Wtyczka Androida do obsługi Gradle w wersji 4.2 obsługuje teraz formaty podpisywania APK w wersji 3 i APK w wersji 4.
Aby włączyć jeden lub oba te formaty w kompilacji, dodaj do pliku build.gradle
lub build.gradle.kts
na poziomie modułu te właściwości:
// build.gradle
android {
...
signingConfigs {
config {
...
enableV3Signing true
enableV4Signing true
}
}
}
// build.gradle.kts
android {
...
signingConfigs {
config {
...
enableV3Signing = true
enableV4Signing = true
}
}
}
Podpisywanie plików APK w wersji 4 umożliwia szybkie wdrażanie dużych plików APK za pomocą instalacji przyrostowej APK za pomocą ADB w Androidzie 11. Ta nowa flaga obejmuje etap podpisywania plików APK podczas wdrażania proces tworzenia konta.
Skonfiguruj podpisywanie aplikacji dla poszczególnych wariantów
Teraz można włączać i wyłączać podpisywanie aplikacji w systemie Gradle Androida. wtyczki na wariant.
Ten przykład pokazuje, jak skonfigurować podpisywanie aplikacji na podstawie wariantu za pomocą metody onVariants()
w Kotlinie lub Groovy:
androidComponents {
onVariants(selector().withName("fooDebug"), {
signingConfig.enableV1Signing.set(false)
signingConfig.enableV2Signing.set(true)
})
Nowa właściwość Gradle:
android.native.buildOutput
Aby ograniczyć ilość danych wyjściowych kompilacji, AGP 4.2 filtruje komunikaty z kompilacji natywnych, które używają CMake i ndk-build
, wyświetlając domyślnie tylko dane wyjściowe kompilatora C/C++. Wcześniej wiersz danych wyjściowych
dla każdego tworzonego pliku, co skutkowało dużą liczbą
wiadomości informacyjne.
Jeśli chcesz zobaczyć cały natywny wynik, ustaw nową właściwość Gradle android.native.buildOutput
na verbose
.
Możesz ustawić tę właściwość w pliku gradle.properties
lub za pomocą wiersza poleceń.
gradle.properties
android.native.buildOutput=verbose
Wiersz polecenia
-Pandroid.native.buildOutput=verbose
Wartość domyślna tej właściwości to quiet
.
Zmiana działania plików gradle.properties
Od wersji AGP 4.2 nie można już zastępować właściwości Gradle
z podprojektów. Inaczej mówiąc, jeśli w pliku gradle.properties
w podprojekcie zamiast w projekcie głównym zadeklarujesz właściwość, zostanie ona zignorowana.
Na przykład w poprzednich wersjach AGP odczytywał wartości z <var>projectDir</var>/gradle.properties
, <var>projectDir</var>/app/gradle.properties
, <var>projectDir</var>/library/gradle.properties
itd. W przypadku modułów aplikacji, jeśli ta sama właściwość Gradle była obecna w obu plikach <var>projectDir</var>/gradle.properties
i <var>projectDir</var>/app/gradle.properties
, pierwszeństwo miała wartość z <var>projectDir</var>/app/gradle.properties
.
W AGP 4.2 to zachowanie zostało zmienione i AGP nie będzie wczytywał wartości z
gradle.properties
w podprojektach (np.
<var>projectDir</var>/app/gradle.properties
).
Ta zmiana wynika z
nowy sposób działania Gradle i obsługa
buforowanie konfiguracji
Więcej informacji o ustawianiu wartości w polu gradle.properties
plików, zobacz
Dokumentacja Gradle
Zmiany dotyczące zgodności i konfiguracji Gradle
W przypadku działania w Android Studio narzędzie do kompilacji Gradle korzysta z pakietu JDK w Studio. W poprzednich wersjach JDK 8 było dołączone do Studio. W wersji 4.2 JDK 11 jest jednak dołączony. Używanie nowej wersji pakietu JDK do uruchamiania Gradle może spowodować pewne niezgodności lub wpłynąć na wydajność JVM z powodu zmian w zbieraczu pamięci podręcznej. Opis tych problemów znajduje się poniżej.
Uwaga: zalecamy uruchamianie Gradle z pakietem JDK 11, ale można zmienić pakiet JDK używany do uruchamiania Gradle w Struktura projektu . Zmiana tego ustawienia spowoduje tylko zmianę pakietu JDK używanego do uruchamiania Gradle. nie zmienia pakietu JDK używanego do uruchamiania samego Studio.
Zgodność Studio z Androidem Wtyczka Gradle (AGP)
Android Studio 4.2 może otwierać projekty korzystające z AGP 3.1 lub nowszej, o ile w AGP jest uruchomione Gradle 4.8.1 lub nowsza wersja. Więcej informacji o zgodności Gradle znajdziesz w artykule Aktualizowanie Gradle.
Optymalizacja kompilacji Gradle na potrzeby JDK 11
Ta aktualizacja pakietu JDK 11 wpływa na domyślną konfigurację czyszczenia pamięci JVM kolektora, bo JDK 8 używa równoległego procesu czyszczenia pamięci, a JDK 11 używa Śmieciownia G1.
Aby potencjalnie zwiększyć wydajność kompilacji, zalecamy testowanie kompilacji Gradle za pomocą równoległego zbieracza. W sekcji gradle.properties
ustaw te wartości:
org.gradle.jvmargs=-XX:+UseParallelGC
Jeśli w tym polu są już inne opcje, dodaj nową:
org.gradle.jvmargs=-Xmx1536m -XX:+UseParallelGC
Aby zmierzyć szybkość kompilacji przy użyciu różnych konfiguracji, zapoznaj się z artykułem Profiluj kompilację
Pliki DEX nieskompresowane w plikach APK, gdy minSdk
= 28 lub nowsza
AGP domyślnie pakuje pliki DEX nieskompresowane w plikach APK, gdy minSdk
= 28 lub
wyżej. Spowoduje to zwiększenie rozmiaru pliku APK, ale zmniejszy rozmiar instalacyjny na urządzeniu, a rozmiar pliku do pobrania pozostanie mniej więcej taki sam.
Aby wymusić skompresowanie plików DEX przez AGP, dodaj do pliku build.gradle
te informacje:
android {
packagingOptions {
dex {
useLegacyPackaging true
}
}
}
Pakowanie skompresowanych bibliotek natywnych za pomocą DSL
Zalecamy pakowanie bibliotek natywnych w formie nieskompresowanej, ponieważ powoduje to zmniejszenie rozmiaru instalacji i pobrania aplikacji oraz skrócenie czasu ładowania aplikacji dla użytkowników. Jeśli jednak chcesz, aby wtyczka Androida do obsługi Gradle
pakiet należy do skompresowanych bibliotek natywnych podczas tworzenia aplikacji, ustaw
useLegacyPackaging
do true
w pliku build.gradle
aplikacji:
android {
packagingOptions {
jniLibs {
useLegacyPackaging true
}
}
}
Flaga useLegacyPackaging
zastępuje atrybut pliku manifestu extractNativeLibs
. Więcej informacji znajdziesz w informacji o wersji Biblioteki natywne pakowane domyślnie w postaci nieskompresowanej.