Wtyczka Androida do obsługi Gradle w wersji 8.1.0 to duża wersja oferująca wiele nowych funkcji i udoskonaleń.
Zgodność
Wersja minimalna | Wersja domyślna | Uwagi | |
---|---|---|---|
Gradle | z Androidem 8.0 | z Androidem 8.0 | Aby dowiedzieć się więcej, zobacz aktualizowanie Gradle. |
Narzędzia do kompilacji SDK | 33.0.1 | 33.0.1 | Zainstaluj lub skonfiguruj narzędzia do kompilacji SDK. |
Zestaw NDK | Nie dotyczy | 25.1.8937393 | Zainstaluj lub skonfiguruj inną wersję pakietu NDK. |
JDK | 17 | 17 | Więcej informacji znajdziesz w sekcji na temat ustawiania wersji JDK. |
Kotlin DSL to domyślna konfiguracja kompilacji
Nowe projekty domyślnie używają teraz połączenia DSL Kotlin (build.gradle.kts
) do konfiguracji kompilacji. Zapewnia to większy komfort edycji niż edytor DSL Groovy (build.gradle
) z wyróżnianiem składni, uzupełnianiem kodu i przechodzeniem do deklaracji. Pamiętaj, że jeśli do konfiguracji kompilacji używasz AGP 8.1 i DSL Kotlin, najlepiej jest używać Gradle 8.1, aby uzyskać najlepsze rezultaty. Więcej informacji znajdziesz w przewodniku po migracji na DSL Kotlin.
Automatyczna obsługa języków dla poszczególnych aplikacji
Począwszy od wersji Android Studio Giraffe Canary 7 i AGP w wersji 8.1.0–alfa07 możesz skonfigurować aplikację tak, aby automatycznie obsługiwała ustawienia języka poszczególnych aplikacji. Na podstawie Twoich zasobów projektu wtyczka Androida do obsługi Gradle generuje plik LocaleConfig
i dodaje do niego odwołanie w ostatecznym pliku manifestu, dzięki czemu nie musisz już tego robić ręcznie. Aby określić języki do uwzględnienia w pliku LocaleConfig
, AGP korzysta z zasobów z folderów res
modułów aplikacji i wszystkich zależności modułów biblioteki.
Pamiętaj, że funkcja automatycznego określania języka według aplikacji obsługuje aplikacje na Androidzie 13 (poziom API 33) lub nowszym. Aby korzystać z tej funkcji, musisz ustawić compileSdkVersion
na wartość 33 lub większą. Aby w poprzednich wersjach Androida skonfigurować preferencje językowe poszczególnych aplikacji, nadal musisz użyć interfejsów API i selektorów języka w aplikacji.
Aby włączyć automatyczną obsługę języków dla poszczególnych aplikacji, określ domyślny język:
- W folderze
res
modułu aplikacji utwórz nowy plik o nazwieresources.properties
. W pliku
resources.properties
ustaw domyślny język za pomocą etykietyunqualifiedResLocale
. Aby utworzyć nazwy ustawień regionalnych, połącz kod języka z opcjonalnymi kodami skryptów i regionów, rozdzielając je łącznikiem:- Język: użyj dwu- lub trzyliterowego kodu ISO 639-1.
- Skrypt (opcjonalnie): użyj kodu ISO 15924.
- Region (opcjonalnie): użyj dwuliterowego kodu ISO 3166-1-alpha-2 lub trzycyfrowego kodu UN_M.49.
Jeśli na przykład Twoim domyślnym językiem jest angielski (USA):
unqualifiedResLocale=en-US
AGP dodaje to domyślne ustawienie regionalne i wszelkie określone przez Ciebie alternatywne języki w katalogach values-*
w folderze res
do automatycznie wygenerowanego pliku LocaleConfig
.
Automatyczna obsługa języków dla poszczególnych aplikacji jest domyślnie wyłączona. Aby włączyć tę funkcję, użyj ustawienia generateLocaleConfig
w bloku androidResources {}
pliku build.gradle.kts
na poziomie modułu (plik build.gradle
, jeśli używasz Groovy):
Kotlin
android { androidResources { generateLocaleConfig = true } }
Odlotowy
android { androidResources { generateLocaleConfig true } }
Android Lint zawiera kod bajtowy kierowany na JVM 17
Od AGP 8.1.0–alfa04 narzędzie Android Lint zawiera kierowanie na kod bajtowy JVM 17. Jeśli piszesz niestandardowe testy lintowania, musisz skompilować kod do JDK w wersji 17 lub nowszej i określić jvmTarget = '17'
w opcjach kompilatora Kotlin.
Więcej informacji o narzędziu Lint znajdziesz w artykule o ulepszaniu kodu za pomocą sprawdzania lintowania.
Ustawienie kompresji biblioteki natywnej zostało przeniesione do DSL
Jeśli nie skonfigurujesz kompresji biblioteki natywnej za pomocą DSL zamiast pliku manifestu, będziesz otrzymywać ostrzeżenie od AGP od 8.1.0 do alfa 10. Poniżej znajdziesz wskazówki, jak zaktualizować konfigurację, aby używać DSL. Aby uzyskać pomoc przy wprowadzaniu tych aktualizacji, użyj Asystenta aktualizacji AGP (Narzędzia > Asystent uaktualniania AGP).
Aby użyć nieskompresowanych bibliotek natywnych, usuń atrybut android::extractNativeLibs
z pliku manifestu i dodaj ten kod do pliku build.gradle.kts
na poziomie modułu (plik build.gradle
, jeśli używasz Groovy):
Kotlin
android { packagingOptions { jniLibs { useLegacyPackaging = false } } }
Odlotowy
android { packagingOptions { jniLibs { useLegacyPackaging false } } }
Flagi kompilacji eksperymentalnych
To eksperymentalne flagi do konfigurowania kompilacji dostępne w AGP 8.1.
Zgłoś | Dodano w | Wartość domyślna | Uwagi |
---|---|---|---|
android.experimental.useDefaultDebugSigningConfigForProfileableBuildtypes |
8.0 AGP | false |
Włączenie tej opcji bez określonych konfiguracji podpisywania powoduje, że AGP używa domyślnej konfiguracji podpisywania na potrzeby debugowania podczas uruchamiania kompilacji możliwej do profilowania lub debugowania. Ta flaga jest domyślnie wyłączona, aby zachęcić autorów kompilacji do deklarowania określonych konfiguracji podpisywania profilowania. |
android.experimental.library.desugarAndroidTest |
8.0 AGP | false |
Ta flaga umożliwia kreatorom bibliotek włączanie usuwania odblasków biblioteki podstawowej dla testowych pakietów APK bez wpływu na wygenerowane AAR, na przykład przez lintowanie. Planujemy w przyszłości wprowadzić obsługę tego zachowania w interfejsie Variant API. |
android.experimental.testOptions.managedDevices.customDevice |
8.0 AGP | false |
Jeśli ta opcja jest włączona, urządzenia zarządzane przez Gradle zezwalają na zdefiniowany przez użytkownika niestandardowy typ urządzenia, który można udostępnić za pomocą wtyczki. Ta flaga musi być włączona, jeśli chcesz używać wtyczki Laboratorium Firebase. |
android.lint.printStackTrace |
8.0 AGP | false |
Jeśli ta opcja jest włączona, Android Lint drukuje zrzut stosu w przypadku awarii. Ta flaga ma te same możliwości co zmienna środowiskowa LINT_PRINT_STACKTRACE . |
android.experimental.testOptions.managedDevices.maxConcurrentDevices |
8.0 AGP | Brak | Określa maksymalną liczbę równoczesnych urządzeń zarządzanych przez Gradle (AVD), które mają być aktywne w dowolnym momencie. Jeśli wartość wynosi 0 lub jest ujemna, nie ma maksymalnej liczby urządzeń. |
android.experimental.testOptions.installApkTimeout |
8.0 AGP | Brak | Limit czasu oczekiwania na zainstalowanie pakietu APK (w sekundach). Jeśli wartość wynosi 0 lub jest ujemna, zostanie ustawiona na UTP domyślna wartość. |