proguard 踩坑之路

作者: APR_killer | 来源:发表于2017-09-08 14:56 被阅读75次

背景:

最近项目中引入了一个三方的库,然后在打包的时候发现一些build的一些task没有执行。原先release版本过滤的d ,v日志也在控制台那边出现了,然后就去寻找是不是某个配置导致了一些proguard的task没有执行。

介绍:

proguard提供了一种比较先进的安全组件来保证android APK和SDK被静态代码分析,所以其最主要的功能就是对我们的代码进行混淆,不让一些黑客可以通过一些静态代码的分析来攻击我们的应用。但是其实proguard还提供了一些其他的功能,那我们先来看下到底做了哪些事情。

功能和流程:

功能:shrinker(压缩),optimizer(优化),obfuscator(混淆),preverifier(预校验)

shrink: 检测并移除没有用到的类,变量,方法和属性;

optimize: 优化代码,非入口节点类会加上private/static/final,没有用到的参数会被删除,一些方法可能会变成内联代码。

obfuscate: 使用短又没有语义的名字重命名非入口类的类名,变量名,方法名。入口类的名字保持不变。

preverify: 预校验代码是否符合Java1.6或者更高的规范(唯一一个与入口类不相关的步骤)

流程:

shrink-->optimize-->obfuscate-->preverify

项目配置:

android studio会在build.gradle下配置如下信息:

buildTypes {

release {

minifyEnabled true

proguard FilesgetDefaultProguardFile('proguard-android-optimize.txt') proguard-rules.pro

}

}

其中proguard-android.txt这个文件是 android sdk提供的一个默认的produard的默认配置项存放在{ANDROID_SDK_ROOT}/tools/proguard/ 但是我们对于发布的release版本应使用proguard-android-optimize.txt,此文件主要配置的是一些默认的proguard配置,而和‘proguard-android’的最大区别在与‘proguard-android-optimize.txt’中开启了Proguard optimize的选项(optimize是Proguard的一项功能)

问题原因:

由于proguard-android配置如下导致主功能optimize,preverify没执行

-dontoptimize

-dontpreverify

注意点:

1.三方库已经混淆的库,需要在主项目添加keep不再进行二次混淆

2.反射获取对象和方法要保证不被混淆。

3.反射三方库的混淆方法和对象存在风险不建议这么使用

4.aar和添加独立module的时候检查是否添加了不必要的混淆

相关文章

  • proguard 踩坑之路

    背景: 最近项目中引入了一个三方的库,然后在打包的时候发现一些build的一些task没有执行。原先release...

  • 踩坑之路

    1,蓝牙搜索重点:android10以上搜索蓝牙需要开启定位 2,在 Android 6.0 中,我们取消了对 A...

  • thymeleaf 踩坑之路(一) 数字(number) 算法坑

    项目地址:https://github.com/yexuebm/utils thymeleaf 踩坑之路(一) 数...

  • 踩坑要趁早

    踩坑是一个好事,想要做成某些事有些坑是必经之路,踩过坑后通过反思学习,能力进步就会加快,有些父母总是怕吃不饱穿不暖...

  • webpack踩坑之路

    webpack+babel常用包和插件 没有设置repository和descriptionnpm WARN de...

  • Spark踩坑之路

    当以cluster/client运行spark时候,运行在如下所示,没有任何异常报错。 接下来就是找日志,发现卡在...

  • RecyclerView踩坑之路

    要使用RecyclerView需添加依赖:compile 'com.android.support:recycle...

  • small 踩坑之路

    新的项目使用了插件化开发,使用了small 在跳转其他插件的其他页面的时候,发现跳转找不到Activity。研究发...

  • kotlin踩坑之路

    工欲善其事必先利其器,首先要先配置开发环境和选好开发工具,我在这里使用的是Android Studio2.3.3和...

  • Flutter 踩坑之路

    周末玩下flutter,遇到好几个问题 一、更新了flutter 后原有工程报错 解决: 二、编译报错 ßChec...

网友评论

    本文标题:proguard 踩坑之路

    本文链接:https://www.haomeiwen.com/subject/nangjxtx.html