Android Gradle 插件 8.1.0 是一个主要版本,包含各种新功能和改进。
兼容性
最低版本 | 默认版本 | 备注 | |
---|---|---|---|
Gradle | 8.0 | 8.0 | 如需了解详情,请参阅更新 Gradle。 |
SDK Build Tools | 33.0.1 | 33.0.1 | 安装或配置 SDK Build Tools。 |
NDK | 不适用 | 25.1.8937393 | 安装或配置其他版本的 NDK。 |
JDK | 17 | 17 | 如需了解详情,请参阅设置 JDK 版本。 |
Kotlin DSL 是 build 配置的默认选项
新项目现在默认使用 Kotlin DSL (build.gradle.kts
) 进行 build 配置。与 Groovy DSL (build.gradle
) 相比,这种方法具有语法突出显示、代码补全以及导航到声明的功能,可提供更好的修改体验。请注意,如果您使用 AGP 8.1 和 Kotlin DSL 进行 build 配置,应使用 Gradle 8.1,以获得最佳体验。如需了解详情,请参阅 Kotlin DSL 迁移指南。
按应用自动设定语言支持
从 Android Studio Giraffe Canary 7 和 AGP 8.1.0-alpha07 开始,您可以将应用配置为自动支持各应用语言偏好设定。Android Gradle 插件会根据您的项目资源生成 LocaleConfig
文件,并在最终清单文件中添加对该文件的引用,这样您就不必再手动执行该操作。AGP 使用应用模块的 res
文件夹中的资源以及任何库模块依赖项来确定要在 LocaleConfig
文件中添加的语言区域。
请注意,各应用自动语言功能支持搭载 Android 13(API 级别 33)或更高版本的应用。如需使用此功能,您必须将 compileSdkVersion
设为 33 或更高版本。如需为之前版本的 Android 配置各应用语言偏好设定,您仍然需要使用 API 和应用内语言选择器。
如需启用各应用自动设定语言支持,请指定默认语言区域:
- 在应用模块的
res
文件夹中,新建一个名为resources.properties
的文件。 在
resources.properties
文件中,使用unqualifiedResLocale
标签设置默认语言区域。将语言代码与可选的脚本代码和区域代码(使用短划线将各部分隔开)组合在一起即可构成语言区域名称:- 语言:使用由两个或三个字母组成的 ISO 639-1 代码。
- 脚本(可选):使用 ISO 15924 代码。
- 区域(可选):使用由两个字母组成的 ISO 3166-1-alpha-2 代码或三位数的 UN_M.49 代码。
例如,如果您的默认语言区域是美式英语:
unqualifiedResLocale=en-US
AGP 会将此默认语言区域和您指定的所有其他语言区域(使用 res
文件夹中的 values-*
目录)添加到自动生成的 LocaleConfig
文件中。
默认情况下,各应用自动设定语言支持功能处于关闭状态。如需开启该功能,请使用模块级 build.gradle.kts
文件(如果您使用的是 Groovy,则为 build.gradle
文件)的 androidResources {}
块中的 generateLocaleConfig
设置:
Kotlin
android { androidResources { generateLocaleConfig = true } }
Groovy
android { androidResources { generateLocaleConfig true } }
Android Lint 包含以 JVM 17 为目标平台的字节码
从 AGP 8.1.0-alpha04 开始,Android Lint 包含以 JVM 17 为目标平台的字节码。如果您编写自定义 lint 检查,则需要使用 JDK 17 或更高版本进行编译,并在 Kotlin 编译器选项中指定 jvmTarget = '17'
。
如需详细了解 lint 工具,请参阅使用 lint 检查改进您的代码。
原生库压缩设置已移至 DSL
从 AGP 8.1.0-alpha10 开始,如果您未使用 DSL(而非清单)配置原生库压缩功能,则会收到警告。以下指南介绍了如何更新配置以使用 DSL。如需获取进行这些更新方面的帮助,请使用 AGP 升级助理 (Tools > AGP Upgrade Assistant)。
如需使用未压缩的原生库,请从清单中移除 android::extractNativeLibs
属性,并将以下代码添加到模块级 build.gradle.kts
文件(如果您使用的是 Groovy,则为 build.gradle
文件):
Kotlin
android { packagingOptions { jniLibs { useLegacyPackaging = false } } }
Groovy
android { packagingOptions { jniLibs { useLegacyPackaging false } } }
实验性 build 标志
这些是 AGP 8.1 中提供的用于配置 build 的实验性标志。
举报 | 添加于 | 默认值 | 备注 |
---|---|---|---|
android.experimental.useDefaultDebugSigningConfigForProfileableBuildtypes |
AGP 8.0 | false |
如果在未指定签名配置的情况下启用此功能,会导致 AGP 在运行可分析或可调试 build 时使用默认的调试签名配置。默认情况下,此标志处于停用状态,以鼓励 build 作者声明特定的性能分析签名配置。 |
android.experimental.library.desugarAndroidTest |
AGP 8.0 | false |
此标志可让库构建器为测试 APK 启用核心库脱糖,而不会影响生成的 AAR(例如,通过 lint 检查)。我们计划最终在 Variant API 中支持此行为。 |
android.experimental.testOptions.managedDevices.customDevice |
AGP 8.0 | false |
启用后,Gradle 管理的设备将允许插件提供用户定义的自定义设备类型。如果要使用 Firebase Test Lab 插件,则必须启用此标志。 |
android.lint.printStackTrace |
AGP 8.0 | false |
启用后,Android lint 会在崩溃时输出堆栈轨迹。此标志具有与 LINT_PRINT_STACKTRACE 环境变量相同的功能。 |
android.experimental.testOptions.managedDevices.maxConcurrentDevices |
AGP 8.0 | 无 | 指定在任何一个时间点处于活跃状态的并发 Gradle 管理的设备 (AVD) 数量上限。如果值为 0 或负数,则设备数量没有上限。 |
android.experimental.testOptions.installApkTimeout |
AGP 8.0 | 无 | 安装 APK 的超时时长(以秒为单位)。如果值为 0 或负数,UTP 会将其设置为默认值。 |