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-v7aarm64-v8ax86_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