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

相关推荐
恋猫de小郭4 小时前
Flutter iOS 的深度优化 PR,搞笑的是贡献者被 Gemini 评审折磨
android·前端·flutter
撩得Android一次心动5 小时前
Kotlin 语言【知识点整理2】
android·开发语言·kotlin
福大大架构师每日一题5 小时前
webrtc-rs/webrtc v0.20.3更新:Android 网络切换后 ICE Restart 卡死约 10 秒的问题终于解决
android·网络·webrtc
mmsx5 小时前
基于 Android 的本地商城订单 App:SQLite + 多角色架构的技术实践(有源码和文档)
android·架构·sqlite
又见情义15 小时前
RK3568 Android 13 板载驱动适配-USB
android·arm开发·驱动开发
delta_hell16 小时前
【阅读源码-Android】动画之Choreographer-2
android·源码·choreographer
mmsx16 小时前
基于 Android 的博物馆文化展示与预约 App —— 设计与实现(有源码和文档)
android·app·源码·文档
一笑的小酒馆17 小时前
AndroidAGP9.0升级之路
android
阮胜昌18 小时前
MySQL 中的动态数据脱敏:无需更改应用程序即可保护敏感数据
android·mysql·adb
aaajj20 小时前
关于MODIFY_PHONE_STATE权限
android