Flutter 现在为 Android 构建设置默认 `abiFilters`
概述
#从 Flutter 3.35 开始,Flutter Gradle 插件会自动为 Android 构建设置 abiFilters
,以防止在发布 APK 中包含不支持的架构。此更改可能会破坏您在应用的 build.gradle
文件中指定的自定义 abiFilters
。
背景
#此更改是为了解决一个问题:第三方依赖项(包含 x86 原生库)会导致 Google Play 错误地将 Flutter 应用识别为支持 x86 设备。当 x86 设备上的用户安装了这些应用时,它们会在运行时崩溃,因为 Flutter 的原生库不适用于 x86。
Flutter Gradle 插件现在会自动配置 abiFilters
,仅包含 Flutter 支持的架构。这可以防止 Google Play 将应用提供给不兼容的设备。
变更说明
#当默认未启用 --splits-per-abi
选项时,Flutter Gradle 插件现在会以编程方式为非可调试构建设置 abiFilters
,以支持
armeabi-v7a
arm64-v8a
x86_64
由于此自动配置发生在处理您的 build.gradle
文件之前,它可能会破坏依赖于空集设置的自定义 abiFilters
设置。
迁移指南
#如果您的应用不自定义 abiFilters
,则无需进行任何更改。
如果您的应用需要自定义包含的架构,您有几种选择:
选项 1:使用 splits-per-abi 标志
#如果您想控制架构的包含,请使用 Flutter 内置的 --splits-per-abi
选项,而不是手动配置 abiFilters
。
flutter build apk --splits-per-abi
这将为每种架构创建单独的 APK,并自动禁用自动 abiFilters
配置。
选项 2:清除并重新配置 abiFilters
#如果您必须使用具有自定义架构过滤器的单个 APK,请清除自动设置的过滤器,并在您的 build.gradle
中配置您自己的过滤器。例如:
android {
buildTypes {
release {
// Clear the automatically set filters.
ndk.abiFilters.clear()
// Set your custom filters.
ndk.abiFilters.addAll(listOf("arm64-v8a"))
}
}
}
时间线
#已发布到版本:3.35.0
稳定版发布:3.35
相关问题
相关 PR