Wtyczka Androida do obsługi Gradle w wersji 8.0.0 to duża wersja, która zawiera wiele nowych funkcje i ulepszenia.
Zgodność
Wersja minimalna | Wersja domyślna | Uwagi | |
---|---|---|---|
Gradle | z Androidem 8.0 | z Androidem 8.0 | Więcej informacji znajdziesz w artykule na temat aktualizowania Gradle. |
Narzędzia do tworzenia pakietów SDK | 30.0.3 | 30.0.3 | Zainstaluj lub skonfiguruj narzędzia SDK Build Tools. |
NDK | Nie dotyczy | 25.1.8937393 | Zainstaluj lub skonfiguruj inną wersję NDK. |
JDK | 17 | 17 | Więcej informacji znajdziesz w sekcji o ustawianiu wersji pakietu JDK. |
Wersje poprawek
Poniżej znajduje się lista poprawek dla wtyczki Android do obsługi Gradle. 8.0.
Wtyczka Androida do obsługi Gradle w wersji 8.0.2 (maj 2023 r.)
Listę błędów naprawionych w AGP 8.0.2 znajdziesz w Android Studio 2022.2.1 – problemy zamknięte.
Wtyczka Androida do obsługi Gradle w wersji 8.0.1 (maj 2023 r.)
Ta drobna aktualizacja zawiera następujące poprawki błędów:
Rozwiązane problemy | |
---|---|
Błąd: „Brak wymogu wersji z podanym identyfikatorem w tabeli” po aktualizacji AGP 7.2.2 -> 7.4.0
|
|
R8 NullPointerException at markTypeAsLive AGP 7.4.1
|
|
[R8 4.0.53] Błąd weryfikacji klasy nieuprawnionej w Androidzie 11
|
Ważna zmiana: skrypt kompilacji na poziomie modułu wymaga przestrzeni nazw
Przestrzeń nazw musisz ustawić w pliku build.gradle.kts
na poziomie modułu zamiast
niż w pliku manifestu. Możesz zacząć używać właściwości DSL namespace
od wersji AGP 7.3. Więcej informacji:
Ustaw przestrzeń nazw.
Podczas migracji do DSL przestrzeni nazw pamiętaj o tych problemach:
- Poprzednie wersje AGP ustalają testową przestrzeń nazw z głównej przestrzeni nazw lub
Identyfikator aplikacji, w niektórych przypadkach może być nieprawidłowy. Asystent uaktualniania AGP blokuje
jeśli zauważy, że główna przestrzeń nazw i testowa przestrzeń nazw Twojego projektu są
tak samo. Jeśli uaktualnienie jest zablokowane, musisz ręcznie zmienić
testNamespace
i odpowiednio zmodyfikuje kod źródłowy. - Gdy zmienisz testową przestrzeń nazw, możliwe, że Twój kod się skompiluje
ale testy zdemonstrowane kończą się niepowodzeniem w czasie działania. Może się tak zdarzyć, jeśli
instrumentowany kod źródłowy testu odwołuje się do zasobu zdefiniowanego w obu
androidTest
i źródła aplikacji.
Więcej informacji: Problem nr 191813691 komentarz nr 19.
Niezbędne zmiany: domyślne wartości opcji kompilacji
Od wersji AGP 8.0 domyślne wartości tych flag zmieniły się na i zwiększają wydajność kompilacji. Aby uzyskać pomoc w dostosowywaniu kodu, tak aby obsługiwał niektóre tych zmian, użyj Asystenta uaktualnień AGP (Narzędzia > Asystent aktualizacji AGP). Asystent uaktualniania przeprowadzi Cię przez zaktualizowanie kodu w celu dostosowania go do nowego zachowania lub ustawienie flag poprzedniego sposobu działania.
Zgłoś | Nowa wartość domyślna | Poprzednia wartość domyślna | Uwagi |
---|---|---|---|
android.defaults.buildfeatures.buildconfig |
false |
true |
AGP 8.0 nie generuje domyślnie elementu BuildConfig . Potrzebujesz
aby określić tę opcję za pomocą DSL w projektach, w których jest potrzebna. |
android.defaults.buildfeatures.aidl |
false |
true |
AGP 8.0 nie włącza domyślnie obsługi AIDL. Musisz określić za pomocą DSL w projektach, w których jest potrzebna. Ta flaga jest które powinny zostać usunięte w wersji AGP 9.0. |
android.defaults.buildfeatures.renderscript |
false |
true |
AGP 8.0 nie włącza domyślnie obsługi języka RenderScript. Czynności, które musisz wykonać określ tę opcję za pomocą DSL w projektach, w których jest potrzebna. Ten planujemy usunąć tę flagę w wersji AGP 9.0. |
android.nonFinalResIds |
true |
false |
AGP 8.0 generuje R klasy z polami, które nie są ostateczne, przez
wartość domyślną. |
android.nonTransitiveRClass |
true |
false |
AGP 8.0 generuje R klasy dla zasobów zdefiniowanych w
tylko w bieżącym module. |
android.enableR8.fullMode |
true |
false |
AGP 8.0 domyślnie włącza tryb całego ruchu R8. Więcej informacji: Tryb całego ruchu R8. |
Zmiany powodujące niezgodność: wymuszone wartości opcji kompilacji
Od wersji AGP 8.0 nie można już zmieniać wartości tych flag. Jeśli
określisz je w pliku gradle.properties
, wartość będzie ignorowana, a wartość AGP
wyświetla ostrzeżenia.
Zgłoś | Wymuszona wartość | Uwagi |
---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
AGP 8.0 generuje ostrzeżenie, jeśli wykryje rozdzielczość konfiguracji etapie konfiguracji, ponieważ negatywnie wpływa na konfigurację Gradle razy. |
android.r8.failOnMissingClasses |
true |
Nieudane kompilacje AGP 8.0 korzystające z R8, jeśli brakuje klas
aby lepiej optymalizować pliki DEX. Aby rozwiązać ten problem, musisz dodać parametr
brakujące biblioteki lub -dontwarn zachowywanie reguł. Aby dowiedzieć się więcej,
zobacz
Brak ostrzeżeń dotyczących zajęć w filtrze R8. |
android.testConfig.useRelativePath |
true |
Gdy obsługa zasobów, zasobów i plików manifestu w Androidzie jest obsługiwana w
testy jednostkowe są włączone, format AGP 8.0 generuje
test_config.properties plik, który zawiera tylko względny
ścieżek konwersji. Dzięki temu testy jednostkowe Androida zawsze mogą używać Gradle
pamięci podręcznej kompilacji. |
android.useNewJarCreator |
true |
AGP wykorzystuje bibliotekę Zipflinger do tworzenia plików JAR w celu ulepszenia i zwiększanie wydajności. |
android.bundletool.includeRepositoriesInDependencyReport |
true |
Jeśli w pakietach aplikacji na Androida i plikach APK dodasz informacje o zależności od pakietów SDK, AGP 8.0 dodaje też do tych informacji listę repozytoriów projektów. Do więcej informacji, patrz Informacje o zależności w Konsoli Play. |
android.enableArtProfiles |
true |
Profile podstawowe są teraz zawsze generowane. Więcej informacji znajdziesz w artykule Profile bazowe. |
android.enableNewResourceShrinker |
true |
Domyślnie używaj nowej implementacji shinkera zasobów. Nowy kurczący zasoby zapewnia obsługę funkcji dynamicznych. |
android.enableSourceSetPathsMap |
true |
Służy do obliczania mapowań względnych ścieżek zasobów, dzięki czemu Gradle kompiluje są aktualizowane częściej. |
android.cacheCompileLibResources |
true |
Skompilowane zasoby biblioteki mogą teraz być domyślnie przechowywane w pamięci podręcznej, ponieważ Gradle
śledzi pliki zasobów względem lokalizacji projektu. Wymagane
android.enableSourceSetPathsMap . |
android.disableAutomaticComponentCreation |
true |
AGP 8.0 domyślnie nie tworzy komponentu SoftwareKomponent. Zamiast tego tworzy Komponenty SoftwareKomponenty tylko dla wersji skonfigurowanych do opublikowania przy użyciu DSL do publikacji. |
Nowa stabilna flaga profilu wykonania
AGP zawiera nową flagę android.settings.executionProfile
. Użyj tej flagi do:
zastąpi domyślny profil wykonywania
SettingsExtension
Więcej informacji znajdziesz w dokumentacji wtyczki do ustawień.
Aby wyświetlić podgląd flag eksperymentalnych, zobacz informacjami o wersji testowej.
Przypisanie leniwej właściwości Kotlin nie jest obsługiwane
Jeśli w skryptach kompilacji używasz biblioteki DSL Gradle'a Kotlin, pamiętaj, że Android
Studio i AGP 8.0 nie obsługują przypisywania właściwości eksperymentalnej za pomocą funkcji
=
. Więcej informacji o tej funkcji znajdziesz w
informacje o wersji
oraz
dokumentacji.
Kategorie zadań Analizatora kompilacji
Począwszy od Android Studio Flamingo, Analizator kompilacji ma nowy domyślny widok Zadania, które wpływają na czas trwania kompilacji. Jeśli Twój projekt korzysta z pakietu AGP 8.0 lub nowszego, zamiast wyświetlać zadania pojedynczo, grupuje je według . Na przykład zadania związane z zasobami Androida, Kotlinem lub Dexingiem są zgrupowane, a następnie sortowane według czasu trwania kompilacji. Dzięki temu możesz łatwo aby wiedzieć, która kategoria ma największy wpływ na czas kompilacji. Rozwijanie każdej kategorii wyświetla listę odpowiednich zadań. Aby wyświetlić zadania pojedynczo: bez grupowania, użyj menu Pogrupuj według.
Nowa wtyczka ustawień
AGP 8.0.0-alfa09 wprowadza nową wtyczkę ustawień. Wtyczka ustawień pozwala scentralizujesz konfiguracje globalne, które mają zastosowanie do wszystkich modułów, w w jednym miejscu, dzięki czemu nie musisz kopiować i wklejać konfiguracji w wielu różnych miejscach. modułów. Możesz też użyć wtyczki ustawień, by utworzyć narzędzie profili wykonania lub różne instrukcje uruchamiania narzędzia oraz przełączać się między nimi.
Aby korzystać z wtyczki ustawień, zastosuj ją w pliku settings.gradle
:
apply plugin 'com.android.settings'
Scentralizuj konfiguracje globalne
Aby skonfigurować konfiguracje globalne, użyj nowego bloku android
w
settings.gradle
. Oto przykład:
android {
compileSdk 31
minSdk 28
...
}
Profile wykonywania narzędzi
Wtyczka ustawień umożliwia też tworzenie profili wykonywania niektórych narzędzi. An profil wykonywania określa sposób uruchamiania narzędzia; możesz wybrać różne w zależności od środowiska. W profilu wykonania można ustawić argumenty JVM dla narzędzia i skonfigurować jego uruchamianie w oddzielnym procesie. Obecnie tylko Narzędzie R8 jest obsługiwane.
Utwórz profile wykonywania i ustaw domyślny profil wykonywania w
settings.gradle
, jak w tym przykładzie:
android {
execution {
profiles {
high {
r8 {
jvmOptions += ["-Xms2048m", "-Xmx8192m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
low {
r8 {
jvmOptions += ["-Xms256m", "-Xmx2048m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
ci {
r8.runInSeparateProcess false
}
}
defaultProfile "low"
}
}
Aby zastąpić domyślny profil, wybierz inny za pomocą
właściwość android.experimental.settings.executionProfile
w
Plik gradle.properties
:
android.experimental.settings.executionProfile=high
Możesz też ustawić tę właściwość za pomocą wiersza poleceń. Pozwala to skonfigurować
różne procesy. Na przykład, jeśli masz przepływ pracy w trybie ciągłej integracji
możesz użyć wiersza poleceń, by zmienić profil wykonywania
zmień plik settings.gradle
:
./gradlew assembleRelease \
-Pandroid.experimental.settings.executionProfile=ci
Do korzystania z pakietu AGP 8.0 wymagany jest pakiet JDK 17
Jeśli do tworzenia aplikacji używasz wtyczki Androida do obsługi Gradle w wersji 8.0, musisz mieć pakiet JDK 17 aby uruchomić Gradle. Android Studio Flamingo obejmuje pakiet JDK 17 i konfiguruje Gradle tak, domyślnie, co oznacza, że większość użytkowników Androida Studio nie musi zmian konfiguracji ich projektów.
Jeśli musisz ręcznie ustawić wersję pakietu JDK używanego przez AGP w Android Studio, musisz użyć pakietu JDK w wersji 17 lub nowszej.
Jeśli używasz AGP niezależnego od Android Studio, uaktualnij JDK do
Ustawianie: JAVA_HOME
zmienna środowiskowa
lub -Dorg.gradle.java.home
opcja wiersza poleceń
do katalogu instalacyjnego JDK 17.