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 o aktualizowaniu Gradle. |
Narzędzia do kompilowania pakietu 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 znajdziesz listę wersji poprawek wtyczki Androida do obsługi Gradle w wersji 8.0.
Wtyczka Androida do obsługi Gradle 8.0.2 (maj 2023 r.)
Listę błędów naprawionych w wersji AGP 8.0.2 znajdziesz w artykule Android Studio 2022.2.1: zamknięte problemy.
Wtyczka Androida do obsługi Gradle w wersji 8.0.1 (maj 2023 r.)
Ta niewielka 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 niesprawnej w Androidzie 11
|
Zmiana powodująca przerwanie działania: w skrypcie kompilacji na poziomie modułu wymagana jest nazwa przestrzeni nazw
Przestrzeń nazw należy ustawić w pliku build.gradle.kts
na poziomie modułu, a nie w pliku manifestu. Możesz zacząć używać właściwości DSL namespace
od wersji AGP 7.3. Więcej informacji znajdziesz w artykule Konfigurowanie przestrzeni nazw.
Podczas migracji do przestrzeni nazw DSL należy wziąć pod uwagę te problemy:
- W poprzednich wersjach AGP w niektórych przypadkach przestrzeń nazw testu była nieprawidłowo wywnioskowana z przestrzeni nazw głównej lub identyfikatora aplikacji. 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 zmodyfikować kod źródłowy. - Po zmianie przestrzeni nazw testów kod może się kompilować, ale testy z instrumentacją mogą się nie uruchomić. 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.
Zmiany wpływające na działanie aplikacji: domyślne wartości opcji kompilacji
Od wersji AGP 8.0 wartości domyślne tych flag uległy zmianie, aby poprawić wydajność kompilacji. Aby dowiedzieć się, jak dostosować kod do obsługi niektórych z tych zmian, skorzystaj z Asystenta przejścia na AGP (Narzędzia > Asystent przejścia na AGP). Asystent uaktualniania poprowadzi Cię przez proces aktualizowania kodu w celu dostosowania go do nowego zachowania lub ustawiania flag, aby zachować poprzednie zachowanie.
Zgłoś | Nowa wartość domyślna | Poprzednia wartość domyślna | Uwagi |
---|---|---|---|
android.defaults.buildfeatures.buildconfig |
false |
true |
AGP 8.0 domyślnie nie generuje BuildConfig . Musisz określić tę opcję za pomocą wyrażenia regularnego w projektach, w których jest ona potrzebna. |
android.defaults.buildfeatures.aidl |
false |
true |
W wersji AGP 8.0 obsługa AIDL nie jest domyślnie włączona. Musisz określić tę opcję za pomocą DSL w projektach, w których jest ona potrzebna. Zamierzamy usunąć tę flagę 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 parametr zostanie usunięty w wersji AGP 9.0. |
android.nonFinalResIds |
true |
false |
AGP 8.0 generuje R klas 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 znajdziesz w artykule Tryb pełny 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
, zostaną zignorowane, a AGP wypisze ostrzeżenia.
Zgłoś | Wymuszona wartość | Uwagi |
---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
AGP 8.0 emituje ostrzeżenie, jeśli wykryje rozdzielczość konfiguracji podczas fazy konfiguracji, ponieważ negatywnie wpływa to na czas konfiguracji Gradle. |
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ł. Więcej informacji znajdziesz w artykule Missing class warnings in R8 shrinker (Angielski). |
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. Aby dowiedzieć się więcej, zapoznaj się z informacjami o zależnościach 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 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. Wymaga włączenia opcji android.enableSourceSetPathsMap . |
android.disableAutomaticComponentCreation |
true |
AGP 8.0 domyślnie nie tworzy komponentu SoftwareKomponent. Zamiast tego AGP tworzy komponenty oprogramowania tylko w przypadku wersji skonfigurowanych do opublikowania za pomocą języka DSL do publikowania. |
Nowa flaga stabilnej dla 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ć flagi eksperymentalne, zapoznaj się z informacjami o wersji zapoznawczej.
Przypisanie leniwej właściwości Kotlin nie jest obsługiwane
Jeśli w swoich skryptach kompilacji używasz języka Kotlin DSL w Gradle, pamiętaj, że Android Studio i AGP 8.0 nie obsługują eksperymentalnego przypisywania właściwości za pomocą operatora =
. 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ą grupowane, a następnie sortowane według czasu kompilacji. Dzięki temu łatwo dowiesz się, 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 Grupuj według.
Nowa wtyczka ustawień
AGP 8.0.0-alpha09 wprowadza nowy moduł 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 pliku 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ć profil domyślny, wybierz inny profil za pomocą właściwości android.experimental.settings.executionProfile
w pliku 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. Jeśli na przykład masz proces ciągłej integracji, możesz użyć wiersza poleceń, aby zmienić profil wykonania bez konieczności zmiany pliku settings.gradle
:
./gradlew assembleRelease \
-Pandroid.experimental.settings.executionProfile=ci
Do uruchamiania AGP 8.0 wymagana jest wersja JDK 17
Jeśli do tworzenia aplikacji używasz wtyczki Androida do obsługi Gradle w wersji 8.0, wymagana jest teraz wersja 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 17 lub nowszego.
Jeśli używasz AGP niezależnie od Android Studio, zaktualizuj wersję JDK, ustawiając zmienną środowiskową JAVA_HOME
lub opcję -Dorg.gradle.java.home
wiersza poleceń w katalogu instalacyjnym JDK 17.
Rozwiązane problemy
Wtyczka Androida do obsługi Gradle w wersji 8.0.0
Rozwiązane problemy | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Wtyczka Android Gradle |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dexer (D8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Integracja z lintem |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Shrinker (R8) |
|
Wtyczka Androida do obsługi Gradle w wersji 8.0.1
Rozwiązane problemy | ||||
---|---|---|---|---|
Zmniejszająca (R8) |
|
Wtyczka Androida do obsługi Gradle w wersji 8.0.2
Rozwiązane problemy | |||||
---|---|---|---|---|---|
Shrinker (R8) |
|