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

多模块Android SDK库项目的Proguard混淆配置相关问题咨询

Android多模块SDK Proguard混淆方案说明

1. 多模块发布时Proguard的默认运行逻辑

默认情况下,Android库模块的混淆是独立执行的,逻辑如下:

  • 每个模块开启minifyEnabled true后,会单独对自身代码执行混淆流程,生成各自的混淆映射表
  • 默认配置下,如果shared模块作为本地依赖被功能1、功能2模块引用,功能模块编译时会把shared模块的未混淆class和自身class合并后再执行混淆,这会导致两个功能模块里的shared类被重复混淆,类名/方法名映射不一致,最终运行时抛出类找不到、方法找不到的异常
  • 如果是单独发布三个模块的AAR(shared单独发布,功能1、功能2依赖远程的shared AAR),那么shared模块发布时已经完成混淆,功能1、功能2编译时只会对自身代码做混淆,此时需要保证shared模块对外暴露的API没有被混淆,才能被功能模块正常引用

2. 是否所有模块会分别独立混淆

默认开启混淆的情况下,每个模块的混淆流程是独立的,各自生成独立的mapping映射文件,没有全局统一的映射规则同步机制,会导致跨模块引用的类/方法名不匹配。

3. 多模块统一混淆实现方案

根据你的发布形式不同,选择对应的配置方案即可:

3.1 功能模块打包时内置shared代码(只发布功能1、功能2两个AAR)

这种场景的配置最简单,统一混淆的成本最低:

  • 所有模块中,仅在最终打包的功能1、功能2模块开启minifyEnabled true,shared模块关闭混淆,避免公共代码被提前处理
  • 项目根目录创建全局统一的混淆配置文件proguard-global.pro,所有功能模块的proguard配置都引用这一份文件,避免规则不一致
  • shared模块配置consumerProguardFiles 'consumer-rules.pro',用于声明跨模块调用需要保留的符号规则

配置示例:
功能模块build.gradle配置:

android {
    buildTypes {
        release {
            minifyEnabled true
            // 引用全局统一混淆规则
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), '../proguard-global.pro'
            // 声明给SDK接入方用的混淆规则
            consumerProguardFiles 'consumer-rules.pro'
        }
    }
    dependencies {
        implementation project(':shared')
    }
}

shared模块build.gradle配置:

android {
    buildTypes {
        release {
            // 关闭混淆,公共代码交由功能模块打包时统一处理
            minifyEnabled false
            consumerProguardFiles 'consumer-rules.pro'
        }
    }
}

该模式下功能模块编译时会合并所有依赖的代码统一做混淆,自动保证跨模块引用的符号一致,不需要额外添加shared类的keep规则,除非你需要保留shared模块的对外API不被混淆。

3.2 三个模块单独发布(shared、功能1、功能2都作为独立AAR上传)

如果需要三个模块独立发布,彼此为远程依赖关系,按以下配置:

  • shared模块单独开启混淆,在它的consumer-rules.pro中keep所有对外暴露的API,保证依赖它的功能模块可以正常引用
  • 功能1、功能2模块各自开启混淆,全局混淆规则中添加shared模块公开API的keep规则,避免功能模块混淆时误裁剪shared的公开符号
  • 所有模块的混淆规则都引用根目录的全局配置文件,保证规则统一

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:27:02