android项目对apk进行混淆

android项目对apk进行混淆,第1张

    混淆apk是一个很基础的工作,博客上也有一堆介绍,本文提供一下这类工作的解决思路。在安卓源码下面和android studio里面的做法差异不大,本文以android源码举例。

    首先在对应mk文件里面添加proguard enabled的语句,系统有一个自带的build/core/proguard.flags,默认是使用这个文件,而且一般项目默认是关闭的,这也是有原因的。因为这里的proguard.flags是没有针对app的配置的,使用默认的混淆,app很有可能就不工作了。

    添加了mk文件修改之后,在Android.mk同级根目录创建本app自有的proguard.flags。新增内容如下,这里需要注意,网上很多demo,基本分为三部分,一部是保留app基础功能部分的内容不混淆2是保持app对外接口,例如get、set、isxx、AIDL、public、native层的接口或者类3.是第三方jar包或接口。混淆的基本原理就是将上诉类或接口进行统一简单字母的替换,如果改变了这些对外接口的名字,很有可能被别人使用的时候就找不到对应哦接口

    一些第三方的库如何不进行混淆,这个根据项目特点,可以自行搜索,比如百度的地图包什么的。

    然后是如何验证和解决混淆过程遇到的问题,因为是对接口名进行替换,如果出现混淆问题的话,log里面一定会有类似

这个时候只需要对相关接口进行例外(-keep)即可,然后用android-studio,直接打开或者dex2jar进行反解可以看到相关的接口是否被简单替换。

apk混淆打包

如果要对apk进行混淆,你要先告知gradle这个app需要混淆,并告知其混淆规则

告知gradle需要混淆的代码

在Project/app/build.gradle中把minifyEnabled设置为true,表示说打包时需要执行混淆 *** 作。如下代码:

buildTypes {

release {

// 混淆

minifyEnabled true

// Zipalign优化

zipAlignEnabled true

// 移除无用的resource文件

shrinkResources true

// 前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,后一个文件是自己的定义混淆文件

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'

signingConfig signingConfigs.release

}

}

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

编写混淆规则

正如上方的代码,proguard-rules.txt就是写好混淆规则的文件。gradle根据这个文件设定的混淆规则对apk进行打包。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11491379.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存