亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

混淆的一些實踐

標簽:
Android

混淆是打包过程中最重要的流程之一,在没有特殊原因的情况下,所有 app 都应该开启混淆。

首先,这里说的的混淆其实是包括了代码压缩、代码混淆以及资源压缩等的优化过程。依靠 ProGuard,混淆流程将主项目以及依赖库中未被使用的类、类成员、方法、属性移除,这有助于规避64K方法数的瓶颈;同时,将类、类成员、方法重命名为无意义的简短名称,增加了逆向工程的难度。而依靠 Gradle 的 Android 插件,我们将移除未被使用的资源,可以有效减小 apk 安装包大小。

我们在公司中开发环境,一般我们自己在测试环境中拿android studio跑一下代码,如果没问题就上传代码到服务器,有一些情况尤其是使用gson来解析数据的时候要注意混淆的影响

以下是我在一个新建的android studio工程的截图:

https://img1.sycdn.imooc.com//5c403a670001f41c15940946.jpg

我们看到默认的

 minifyEnabled false

因为开启混淆会使编译时间变长,所以debug模式下不应该开启。我们需要做的是:

  1. releaseminifyEnabled的值改为true,打开混淆;

  2. 加上shrinkResources true,打开资源压缩。

https://img1.sycdn.imooc.com//5c403aca00014cff20600814.jpg

那我们如何解决gson的数据解析类不会被混淆呢:

如果所有的bean类都在 xxx.littletest.bean的package下的话,我们这样来引入

https://img1.sycdn.imooc.com//5c403b5d00015e4418280768.jpg

如果我们使用组件化开发,子工程会编译为aar再引入主工程,那么主工程的proguard会

覆盖子工程的proguard,我们怎么来处理呢

我们可以在主工程的proguard里加入:

#entity.
-keep class * implements java.io.Serializable
-keepclassmembers class * implements java.io.Serializable { *; }

然后我们让子工程的QuestionInfo继承Serializable就可以了

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
全棧工程師
手記
粉絲
6509
獲贊與收藏
303

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消