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

Gradle配置splits生成APK异常:多出2个仅ABI维度的APK

为什么Gradle生成了额外的纯ABI APK?

这个问题我之前也碰到过,原因其实是Gradle的Splits机制默认会生成所有可能的拆分变体组合——不仅是你预期的density+ABI交叉组合,还会包含单一维度的拆分(比如只按ABI拆分、包含所有密度的APK,或者只按密度拆分、包含所有ABI的APK)。

你的配置里只指定了要包含的density和ABI值,但没有限制拆分的维度组合,所以Gradle会自动生成所有可能的组合:

  • 交叉维度:mdpi-x86、mdpi-arm64-v8a、hdpi-x86、hdpi-arm64-v8a(4个,符合预期)
  • 单一ABI维度:x86(包含mdpi+hdpi)、arm64-v8a(包含mdpi+hdpi)(这就是你看到的额外2个)
  • (如果没被过滤的话,还可能有单一density维度的mdpi、hdpi APK)

如何只保留交叉维度的APK?

要解决这个问题,你需要在build.gradle中添加过滤规则,移除那些只满足单一拆分维度的变体。这里提供两种常用的配置方式:

方式一:使用variantFilter过滤

android {
    // 你的原有splits配置保持不变
    splits {
        density {
            enable true
            reset()
            include "mdpi", "hdpi"
        }
        abi {
            enable true
            reset()
            include "x86", "arm64-v8a"
        }
    }

    // 添加变体过滤逻辑
    variantFilter { variant ->
        def hasDensitySplit = variant.flavorName.contains("mdpi") || variant.flavorName.contains("hdpi")
        def hasAbiSplit = variant.flavorName.contains("x86") || variant.flavorName.contains("arm64-v8a")
        
        // 只保留同时包含density和ABI拆分的变体
        if ((hasDensitySplit && !hasAbiSplit) || (hasAbiSplit && !hasDensitySplit)) {
            setIgnore(true)
        }
    }
}

方式二:通过applicationVariants控制输出

android {
    splits {
        // 你的原有splits配置保持不变
    }

    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def density = output.getFilter(com.android.build.OutputFile.DENSITY)
            def abi = output.getFilter(com.android.build.OutputFile.ABI)
            
            // 如果只有density或只有ABI被拆分,就禁用这个输出
            if ((density != null && abi == null) || (density == null && abi != null)) {
                output.enabled = false
            }
        }
    }
}

额外补充:禁用通用APK

如果还想移除包含所有ABI和密度的universal APK,可以在splits配置中添加:

splits {
    // 原有density和abi配置...
    universalApk false // 禁用通用APK
}

配置完成后重新构建,Gradle就只会生成你预期的4个交叉维度APK了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:55:41