You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle构建指定ABI的ci风味变体时额外生成x86应用如何解决

问题原因
  • 构建命令拼写错误:你使用的gradle assembleCiBuild不符合你项目的构建变体命名规则,你项目的构建类型只有debug/assert/release三种,没有名为Build的构建类型。Gradle支持任务名驼峰模糊匹配,错误的命令会同时匹配到ci和x86两个风味的同类型构建任务,触发x86架构的编译。
  • AGP 7.0.3存在已知缺陷:该版本的Android Gradle插件在处理多风味Native项目时,configureCMake*任务不会按当前构建变体的abiFilters过滤,会编译所有产品风味声明过的ABI架构。
  • Crashlytics符号上传配置错误:你在所有构建类型下的firebaseCrashlytics.unstrippedNativeLibsDir路径写死为arm64-v8a的固定路径,Crashlytics的原生符号上传任务会主动扫描所有ABI的符号文件,触发全架构编译。
修复方案
  1. 修正构建命令,明确指定要构建的完整变体名:
    构建ci风味的debug版本执行:gradle assembleCiDebug
    构建ci风味的release版本执行:gradle assembleCiRelease
  2. 升级AGP版本到7.0.4及以上,该版本已修复多风味Native项目ABI过滤失效的问题,修改根目录build.gradle的classpath配置即可:
    classpath 'com.android.tools.build:gradle:7.0.4'
    
  3. 如果暂时无法升级AGP,可以在项目根目录的gradle.properties中添加以下配置,强制仅编译目标变体指定的ABI:
    android.experimental.buildOnlyTargetAbi=true
    
  4. 修正Crashlytics符号路径配置,使用变体API动态设置路径,避免固定路径触发全架构扫描,示例配置如下:
    android.applicationVariants.all { variant ->
        variant.firebaseCrashlytics.unstrippedNativeLibsDir = file("build/intermediates/stripped_native_libs/${variant.name}/out/lib/${variant.ndk.abiFilters.first()}")
    }
    

内容的提问来源于stack exchange,提问作者parean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:36:04