Wtyczka Androida do obsługi Gradle w wersji 8.0.0 to ważna wersja, 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 sekcji Aktualizowanie Gradle. |
SDK Build Tools | 30.0.3 | 30.0.3 | Zainstaluj lub skonfiguruj narzędzia do kompilacji pakietu SDK. |
NDK | Nie dotyczy | 25.1.8937393 | Zainstaluj lub skonfiguruj inną wersję NDK. |
JDK | 17 | 17 | Więcej informacji znajdziesz w artykule o ustawianiu 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 zamkniętych zgłoszeniach dotyczących Androida 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] Nie udało się zweryfikować klasy na 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 testów są takie same. Jeśli uaktualnienie jest zablokowane, musisz ręcznie zmienić
testNamespace
i 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 niektórych z 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ą języka DSL w projektach, w których jest ona potrzebna. Planujemy usunąć ten flag w AGP 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 w AGP 9.0. |
android.nonFinalResIds |
true |
false |
AGP 8.0 domyślnie generuje R klasy z polami nieoznaczonymi jako final. |
android.nonTransitiveRClass |
true |
false |
AGP 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 Tryb pełny 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 określisz je w pliku gradle.properties
, wartość zostanie zignorowana, a AGP wyświetli ostrzeżenia.
Zgłoś | Wymuszona wartość | Uwagi |
---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
AGP 8.0 wyświetla ostrzeżenie, jeśli wykryje rozwiązanie konfiguracji w fazie konfiguracji, ponieważ ma to negatywny wpływ na czas konfiguracji Gradle. |
android.r8.failOnMissingClasses |
true |
AGP 8.0 nie kompiluje projektów, które korzystają z R8, jeśli brakuje w nich klas, aby zapewnić lepszą optymalizację DEX. Aby rozwiązać ten problem, musisz dodać brakujące biblioteki lub -dontwarn zachować reguły-dontwarn . Więcej informacji znajdziesz w artykule Missing class warnings in R8 shrinker (Ostrzeżenia o brakujących klasach w narzędziu do zmniejszania kodu 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 mapowań względnych ścieżek zasobów, dzięki czemu kompilacje Gradle są częściej aktualizowane. |
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 komponentu SoftwareComponent. Zamiast tego AGP tworzy elementy SoftwareComponent tylko w przypadku wariantów, które są skonfigurowane do publikowania za pomocą języka 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.
Przypisanie właściwości leniwej w języku Kotlin nie jest obsługiwane
Jeśli w skryptach kompilacji używasz 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 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, Analizator kompilacji nie wyświetla zadań osobno, ale 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.
Wtyczka Nowe ustawienia
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 wykonywania narzędzi
Wtyczka ustawień umożliwia też tworzenie profili wykonawczych 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ć domyślny profil, 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 AGP 8.0 wymagany jest pakiet JDK 17
Jeśli do kompilowania aplikacji używasz wtyczki Androida do obsługi Gradle w wersji 8.0, do uruchomienia Gradle wymagany jest teraz pakiet JDK 17. Android Studio Flamingo zawiera JDK 17 i konfiguruje Gradle tak, aby domyślnie z niego korzystać. Oznacza to, że większość użytkowników Androida Studio nie musi wprowadzać żadnych zmian w konfiguracji swoich projektów.
Jeśli musisz ręcznie ustawić wersję JDK używaną przez AGP w Android Studio, musisz użyć JDK 17 lub nowszego.
Jeśli używasz AGP niezależnie od Androida Studio, uaktualnij 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.0
Rozwiązane problemy | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Wtyczka Androida do obsługi Gradle |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dexer (D8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Integracja z Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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.2
Rozwiązane problemy | |||||
---|---|---|---|---|---|
Shrinker (R8) |
|