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

配置各架构单独构建Android APK,为何生成文件完全相同?

问题原因及解决办法

1. 项目无Native库(.so文件)可拆分

如果你的项目本身没有包含任何针对不同架构的Native库文件,开启ABI splits后生成的各APK本质上没有内容差异——只是文件名不同,内部代码、资源完全一致,因此MD5值完全相同。

验证方式:解压任意一个生成的APK,查看lib目录,若该目录不存在或为空,即可确认没有可拆分的Native库。

2. 未配置Native库打包过滤规则

即使项目中有Native库,若未在build.gradle中配合设置abiFilters,Gradle可能会将所有架构的.so文件打包进每个APK,导致各架构APK内容完全一致。

需在对应的buildTypes(比如release)中添加ndk.abiFilters配置,示例:

android {
    ...
    buildTypes {
        release {
            ...
            ndk {
                abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
            }
        }
    }
    splits {
        abi {
            enable true
            reset()
            include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
            universalApk false
        }
    }
}

该配置会让Gradle生成对应架构APK时,仅打包该架构的.so文件。

3. Native库文件路径配置错误

如果Native库未放在默认的src/main/jniLibs/[ABI]/目录下,且未通过sourceSets指定正确路径,Gradle会找不到可拆分的Native库,最终生成的APK内容无差异。

检查并修正sourceSets配置,确保jniLibs路径正确:

android {
    ...
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs'] // 若so文件放在项目根目录的libs文件夹下
        }
    }
}

内容的提问来源于stack exchange,提问作者Ruben P. Grady

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 22:33:14