Android项目构建时生成两个相同APK,求问问题触发原因
重复APK生成原因排查
常见触发场景
- ABI拆分配置问题:如果你的module层级
build.gradle中开启了splits.abi按CPU架构拆分APK,同时设置了universalApk true,会同时生成各架构专属APK和全架构通用APK,若未注意文件名后缀的架构标识,会误认为是完全相同的文件。 - Product Flavor配置重复:若你定义了多个productFlavors,但两个flavor的
applicationId、版本配置、代码分支、资源规则完全无差异,构建后生成的APK内容会完全一致,仅文件名的flavor标识不同。 - Build Type配置冗余:自定义多个buildType时,如果两个类型的签名规则、混淆配置、调试开关、编译参数完全相同,构建后也会输出内容一致的APK。
- AGP版本异常:3.0~4.1区间的部分Android Gradle Plugin版本存在构建缓存bug,会重复输出相同APK到产物目录。
排查步骤
- 检查module级
build.gradle中的productFlavors、buildTypes、splits三个代码块,确认是否存在重复的规则定义。 - 对比两个APK的哈希值:终端执行
md5 <APK文件路径>(Windows环境可使用CertUtil工具),如果哈希值完全一致才是内容真的相同,哈希值不同则为不同配置的构建产物。 - 清理缓存后重新构建:执行
./gradlew clean assemble<构建变体名>(Windows下执行gradlew.bat clean assemble<构建变体名>),确认最终输出的APK数量是否正常。
内容的提问来源于stack exchange,提问作者João Roberto
相关产品推荐
相关产品推荐

