AndroidStudio module编译aar混淆文件处理

目录

一.背景

二.混淆兼容


一.背景

一般我们在开发应用的时候,可能需要封装对应的功能模块,封装成aar包对外提供,封装成aar对外提供的话,考虑到安全性方面,我们需要对提供的aar包进行混淆,而且要保证aar的release版本保持的不混淆文件不能被app的release版本混淆了;同理,我们要考虑到aar中的依赖包不能在app中没有依赖了,或者说最终的apk中没有此依赖包了。

二.混淆兼容

首先我们需要对混淆进行兼容,我们保持aar中的不混淆文件只需要在原先的proguard-rules.pro中添加自己的规则就行了,一般常用的是将类保持不混淆,或者将内部类保持不混淆,如下是这两个的示例:

复制代码
-keep class com.xxx.xxx.xxx.Xxx{ *; }
-keep class com.xxx.xxx.xxx.Xxx$* { *; }

详细的规则我这边不展开了,网上有很多

然后在buildTypes中添加如下内容,就可以开启了aar包的混淆

复制代码
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }

这样就完成了aar包的混淆,但是我发现一个问题,aar包确实保持住不被混淆的类了,但是在app中集成aar包然后打包成release版本的时候提示找不到类,说明还是被混淆了,说明即使aar中不被混淆,在最终集成到app中也可能被混淆,然后其实我们要做如下处理:

在defaultConfig中添加如下配置:

复制代码
        // 关键配置:此规则文件会打入AAR,并传递给依赖此库的APP
        consumerProguardFiles 'proguard-rules.pro'

上述的proguard-rules.pro文件就是之前配置的保持不混淆文件,也可以自定义这个不混淆文件,我这边使用的是同一个文件,这样就把规则传递给app模块了,release app就不会报错类找不到等问题了

相关推荐
感谢地心引力1 天前
安卓、苹果手机无线投屏到Windows
android·windows·ios·智能手机·安卓·苹果·投屏
优雅的潮叭1 天前
cud编程之 reduce
android·redis·缓存
2601_949613021 天前
flutter_for_openharmony家庭药箱管理app实战+用药知识详情实现
android·javascript·flutter
一起养小猫1 天前
Flutter for OpenHarmony 实战 表单处理与验证完整指南
android·开发语言·前端·javascript·flutter·harmonyos
2601_949975081 天前
flutter_for_openharmony城市井盖地图app实战+附近井盖实现
android·flutter
倾云鹤1 天前
通用Digest认证
android·digest
我是阿亮啊1 天前
Android 自定义 View 完全指南
android·自定义·自定义view·viewgroup
2601_949833391 天前
flutter_for_openharmony口腔护理app实战+意见反馈实现
android·javascript·flutter
峥嵘life1 天前
Android 16 EDLA测试STS模块
android·大数据·linux·学习
TheNextByte11 天前
如何打印Android手机联系人?
android·智能手机