Wtyczka Androida do obsługi Gradle w wersji 8.0.0 to wersja główna, która zawiera wiele nowych funkcji i ulepszeń.
Zgodność
| Wersja minimalna | Wersja domyślna | Uwagi | |
|---|---|---|---|
| Gradle | z Androidem 8.0 | z Androidem 8.0 | Więcej informacji znajdziesz w artykule Aktualizowanie Gradle. |
| Narzędzia do kompilacji 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 artykule Ustawianie wersji 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 w wersji 8.0.2 (maj 2023 r.)
Listę błędów naprawionych w AGP 8.0.2 znajdziesz w artykule Zamknięte problemy w Android Studio 2022.2.1.
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: „No VersionRequirement with the given id in the table” (W tabeli nie ma elementu VersionRequirement o podanym identyfikatorze) po uaktualnieniu AGP z wersji 7.2.2 do 7.4.0
|
|
|
R8 NullPointerException at markTypeAsLive AGP 7.4.1
|
|
|
[R8 4.0.53] Niepowodzenie weryfikacji klasy w Androidzie 11
|
|
Zmiana powodująca niezgodność: w skrypcie kompilacji na poziomie modułu wymagana jest przestrzeń nazw
Przestrzeń nazw musisz ustawić w pliku build.gradle.kts na poziomie modułu, a nie w pliku manifestu. Możesz zacząć używać właściwości namespace DSL od AGP 7.3. Więcej informacji znajdziesz w artykule Ustawianie przestrzeni nazw.
Podczas migracji do DSL przestrzeni nazw pamiętaj o tych kwestiach:
- W niektórych przypadkach poprzednie wersje AGP nieprawidłowo wywnioskują przestrzeń nazw testu z głównej przestrzeni nazw lub identyfikatora aplikacji. Asystent uaktualniania AGP blokuje uaktualnienie, jeśli stwierdzi, że główna przestrzeń nazw projektu i przestrzeń nazw testu są takie same. Jeśli uaktualnienie jest zablokowane, musisz ręcznie zmienić
testNamespacei odpowiednio zmodyfikować kod źródłowy. - Po zmianie przestrzeni nazw testu może się zdarzyć, że kod zostanie skompilowany, ale testy instrumentowane nie powiodą się w czasie działania. Może się to zdarzyć, jeśli kod źródłowy testu z instrumentacją odwołuje się do zasobu zdefiniowanego zarówno w
androidTest, jak i w źródłach aplikacji.
Więcej informacji znajdziesz w komentarzu 19 do zgłoszenia 191813691.
Zmiany powodujące niezgodność: domyślne wartości opcji kompilacji
Od AGP 8.0 domyślne wartości tych flag zostały zmienione, aby poprawić wydajność kompilacji. Aby uzyskać pomoc w dostosowaniu kodu do tych zmian, użyj Asystenta uaktualniania AGP (Narzędzia > Asystent uaktualniania AGP). Asystent uaktualniania przeprowadzi Cię przez proces aktualizacji kodu, aby dostosować go do nowego działania, lub ustawienia flag, aby zachować poprzednie działanie.
| 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ą DSL w projektach, w których jest ona potrzebna. |
android.defaults.buildfeatures.aidl |
false |
true |
AGP 8.0 domyślnie nie włącza obsługi AIDL. Musisz określić tę opcję za pomocą DSL w projektach, w których jest ona potrzebna. Planujemy usunąć ten flagę we wtyczce Androida do obsługi Gradle 9.0. |
android.defaults.buildfeatures.renderscript |
false |
true |
AGP 8.0 domyślnie nie włącza obsługi RenderScript. Musisz określić tę opcję za pomocą DSL w projektach, w których jest ona potrzebna. Ten flag zostanie usunięty we wtyczce Androida do obsługi Gradle 9.0. |
android.nonFinalResIds |
true |
false |
AGP 8.0 domyślnie generuje klasy R z polami nieoznaczonymi jako final. |
android.nonTransitiveRClass |
true |
false |
Wtyczka Androida do obsługi Gradle 8.0 generuje klasy R tylko dla zasobów zdefiniowanych w bieżącym module. |
android.enableR8.fullMode |
true |
false |
AGP 8.0 domyślnie włącza pełny tryb R8. Więcej informacji znajdziesz w sekcji Pełny tryb R8. |
Zmiany powodujące niezgodność: wymuszone wartości opcji kompilacji
Od AGP 8.0 nie możesz już zmieniać wartości tych flag. Jeśli podasz je w pliku gradle.properties, wartość zostanie zignorowana, a AGP wyświetli ostrzeżenia.
| Zgłoś | Wymuszona wartość | Uwagi |
|---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
Wtyczka Androida do obsługi Gradle 8.0 wyświetla ostrzeżenie, jeśli podczas fazy konfiguracji wykryje rozwiązywanie konfiguracji, ponieważ ma to negatywny wpływ na czas konfiguracji Gradle. |
android.r8.failOnMissingClasses |
true |
Wtyczka Androida do obsługi Gradle 8.0 przerywa kompilacje, które używają R8, jeśli brakuje klas, aby zapewnić lepszą optymalizację DEX. Aby rozwiązać ten problem, musisz dodać brakujące biblioteki lub -dontwarnzachować reguły. Więcej informacji znajdziesz w artykule Missing class warnings in R8 shrinker (Ostrzeżenia o brakujących klasach w kompresorze R8). |
android.testConfig.useRelativePath |
true |
Gdy włączona jest obsługa używania zasobów, komponentów i plików manifestu Androida w testach jednostkowych, AGP 8.0 generuje plik test_config.properties, który zawiera tylko ścieżki względne. Dzięki temu testy jednostkowe Androida mogą zawsze korzystać z pamięci podręcznej kompilacji Gradle. |
android.useNewJarCreator |
true |
AGP używa biblioteki Zipflinger podczas tworzenia plików JAR, aby zwiększyć wydajność kompilacji. |
android.bundletool.includeRepositoriesInDependencyReport |
true |
Gdy dodawanie informacji o zależnościach pakietu SDK w plikach AAB i APK jest włączone, AGP 8.0 dodaje do tych informacji również listę repozytoriów projektu. Więcej informacji znajdziesz w artykule Informacje o zależnościach w Konsoli Play. |
android.enableArtProfiles |
true |
Profile podstawowe są teraz zawsze generowane. Więcej informacji znajdziesz w sekcji Profile podstawowe. |
android.enableNewResourceShrinker |
true |
Domyślnie używaj nowej implementacji narzędzia do zmniejszania rozmiaru zasobów. Nowy kompresor zasobów obsługuje funkcje dynamiczne. |
android.enableSourceSetPathsMap |
true |
Używane do obliczania względnych map ścieżek zasobów, dzięki czemu kompilacje Gradle są częściej aktualne. |
android.cacheCompileLibResources |
true |
Skompilowane zasoby biblioteki można teraz domyślnie buforować, ponieważ Gradle śledzi pliki zasobów względem lokalizacji projektu. Wymaga włączenia
android.enableSourceSetPathsMap. |
android.disableAutomaticComponentCreation |
true |
AGP 8.0 domyślnie nie tworzy elementu SoftwareComponent. Zamiast tego AGP tworzy komponenty oprogramowania tylko dla wariantów, które są skonfigurowane do publikowania za pomocą DSL publikowania. |
Nowa stabilna flaga profilu wykonania
AGP zawiera nową flagę android.settings.executionProfile. Użyj tego parametru, aby zastąpić domyślny profil wykonania z SettingsExtension.
Więcej informacji znajdziesz w dokumentacji wtyczki ustawień.
Aby wyświetlić podgląd eksperymentalnych flag, zapoznaj się z informacjami o wersji.
Przypisywanie właściwości leniwych w języku Kotlin nie jest obsługiwane
Jeśli do skryptów kompilacji używasz Kotlin DSL w Gradle, pamiętaj, że Android Studio i wtyczka Androida do obsługi Gradle w wersji 8.0 nie obsługują eksperymentalnego przypisywania właściwości za pomocą operatora =. Więcej informacji o tej funkcji znajdziesz w informacjach o wersji i dokumentacji.
Kategorie zadań Analizatora kompilacji
Od Androida Studio Flamingo Analizator kompilacji ma nowy widok domyślny dla zadań, które wpływają na czas trwania kompilacji. Jeśli Twój projekt korzysta z AGP 8.0 lub nowszego, zamiast wyświetlać zadania pojedynczo, Analizator kompilacji grupuje je według kategorii. Na przykład zadania związane z zasobami Androida, Kotlinem lub Dexingiem są grupowane, a następnie sortowane według czasu trwania kompilacji. Dzięki temu łatwo sprawdzisz, która kategoria ma największy wpływ na czas kompilacji. Po rozwinięciu każdej kategorii wyświetli się lista odpowiednich zadań. Aby wyświetlać zadania pojedynczo, bez grupowania, użyj menu Grupuj według.

Nowa wtyczka ustawień
W AGP 8.0.0-alpha09 wprowadziliśmy nową wtyczkę ustawień. Wtyczka ustawień umożliwia centralizację konfiguracji globalnych – konfiguracji, które mają zastosowanie do wszystkich modułów – w jednym miejscu, dzięki czemu nie musisz kopiować i wklejać konfiguracji w wielu modułach. Możesz też użyć wtyczki ustawień, aby utworzyć profile wykonywania narzędzi lub różne instrukcje dotyczące sposobu uruchamiania narzędzia i przełączać się między nimi.
Aby użyć 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 wykonania narzędzia
Wtyczka ustawień umożliwia też tworzenie profili wykonywania dla niektórych narzędzi. Profil wykonania określa sposób działania narzędzia. W zależności od środowiska możesz wybrać różne profile wykonania. W profilu wykonania możesz ustawić argumenty JVM dla narzędzia i skonfigurować je tak, aby działało w osobnym procesie. Obecnie obsługiwane jest tylko narzędzie R8.
Utwórz profile wykonania i ustaw domyślny profil wykonania w pliku settings.gradle, jak pokazano 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ść przy użyciu wiersza poleceń, co pozwala skonfigurować różne przepływy pracy. Jeśli na przykład masz przepływ pracy 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 uruchomienia wtyczki Androida do obsługi Gradle 8.0 wymagany jest pakiet JDK 17
Jeśli do kompilacji aplikacji używasz wtyczki Androida do obsługi Gradle w wersji 8.0, do uruchomienia Gradle jest teraz wymagany pakiet JDK 17. Android Studio Flamingo zawiera JDK 17 i domyślnie konfiguruje Gradle do używania. Oznacza to, że większość użytkowników Androida Studio nie musi wprowadzać żadnych zmian w konfiguracji swoich projektów.
Jeśli trzeba ręcznie ustawić wersję JDK używaną przez wtyczkę Androida do obsługi Gradle w Android Studio, musisz zastosować JDK 17 lub nowszy.
Jeśli używasz wtyczki Androida do obsługi Gradle niezależnie od Androida Studio, zaktualizuj wersję JDK, ustawiając JAVA_HOME
zmienną środowiskową
lub -Dorg.gradle.java.home
opcję wiersza poleceń
na katalog instalacyjny JDK 17.
Rozwiązane problemy
Wtyczka Androida do obsługi Gradle w wersji 8.0.2
| Rozwiązane problemy | |||||
|---|---|---|---|---|---|
| Shrinker (R8) |
|
||||
Wtyczka Androida do obsługi Gradle w wersji 8.0.1
| Rozwiązane problemy | ||||
|---|---|---|---|---|
| Shrinker (R8) |
|
|||
Wtyczka Androida do obsługi Gradle w wersji 8.0.0
| Rozwiązane problemy | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Wtyczka Androida do obsługi Gradle |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Dexer (D8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Integracja z Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Shrinker (R8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||