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就不会报错类找不到等问题了

相关推荐
阿巴斯甜18 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker18 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq952719 小时前
Andorid Google 登录接入文档
android
黄林晴21 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab1 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿1 天前
Android MediaPlayer 笔记
android
Jony_2 天前
Android 启动优化方案
android
阿巴斯甜2 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇2 天前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_2 天前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android