Wtyczka Androida do obsługi Gradle 8.1.0 (lipiec 2023 r.)

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:

  1. W folderze res modułu aplikacji utwórz nowy plik o nazwie resources.properties.
  2. W pliku resources.properties ustaw domyślny język za pomocą etykiety unqualifiedResLocale. Aby utworzyć nazwy ustawień regionalnych, połącz kod języka z opcjonalnymi kodami skryptów i regionów, rozdzielając je łącznikiem:

    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ść.