混淆是打包过程中最重要的流程之一,在没有特殊原因的情况下,所有 app 都应该开启混淆。
首先,这里说的的混淆其实是包括了代码压缩、代码混淆以及资源压缩等的优化过程。依靠 ProGuard,混淆流程将主项目以及依赖库中未被使用的类、类成员、方法、属性移除,这有助于规避64K方法数的瓶颈;同时,将类、类成员、方法重命名为无意义的简短名称,增加了逆向工程的难度。而依靠 Gradle 的 Android 插件,我们将移除未被使用的资源,可以有效减小 apk 安装包大小。
我们在公司中开发环境,一般我们自己在测试环境中拿android studio跑一下代码,如果没问题就上传代码到服务器,有一些情况尤其是使用gson来解析数据的时候要注意混淆的影响
以下是我在一个新建的android studio工程的截图:
我们看到默认的
minifyEnabled false
因为开启混淆会使编译时间变长,所以debug
模式下不应该开启。我们需要做的是:
将
release
下minifyEnabled
的值改为true
,打开混淆;加上
shrinkResources true
,打开资源压缩。
那我们如何解决gson的数据解析类不会被混淆呢:
如果所有的bean类都在 xxx.littletest.bean的package下的话,我们这样来引入
如果我们使用组件化开发,子工程会编译为aar再引入主工程,那么主工程的proguard会
覆盖子工程的proguard,我们怎么来处理呢
我们可以在主工程的proguard里加入:
#entity. -keep class * implements java.io.Serializable -keepclassmembers class * implements java.io.Serializable { *; }
然后我们让子工程的QuestionInfo继承Serializable就可以了
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦