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 小时前
描述文件、企业证书、MDM 不是三个名字,是三层
android·ios·智能手机
字节暗面1 小时前
一次游戏安全SO静态分析记录:腾讯ACE与FairGuard加固强度对比
android·逆向工程·游戏加固
传奇开心果编程2 小时前
【Jetpack Compose基础语法学与练】第9课 SideEffect副作用 + LaunchedEffect,处理异步任务和生命周期
android·学习·ui·kotlin·android jetpack
2401_833269304 小时前
RecyclerView多布局详解
android
v_34836087624 小时前
Android_8 zygote启动分析
android
消失的旧时光-19434 小时前
Android 系统层扫盲 11:JNI 到底是什么?Java / Kotlin 是怎么调用 C/C++ 的?
android·binder·zygote·system_server·aops
mmsx5 小时前
Android 地图几万要素卡成幻灯片?顶点缓冲批上传与显存复用
android·opengl·地图·栅格
北京自在科技15 小时前
谷歌 Find Hub 迎来新版本更新
android·安卓
古法安卓21 小时前
Android-休眠唤醒后onLocationChanged没有数据问题排查
android·java·android studio
Htr_1 天前
Creem 2.0 使用指南:面向 AI 构建时代的资金平台
android·数据库·人工智能·ui·photoshop