proguard 踩坑之路

背景:

最近項(xiàng)目中引入了一個(gè)三方的庫反璃,然后在打包的時(shí)候發(fā)現(xiàn)一些build的一些task沒有執(zhí)行昵慌。原先release版本過濾的d ,v日志也在控制臺(tái)那邊出現(xiàn)了淮蜈,然后就去尋找是不是某個(gè)配置導(dǎo)致了一些proguard的task沒有執(zhí)行斋攀。

介紹:

proguard提供了一種比較先進(jìn)的安全組件來保證android APK和SDK被靜態(tài)代碼分析,所以其最主要的功能就是對(duì)我們的代碼進(jìn)行混淆,不讓一些黑客可以通過一些靜態(tài)代碼的分析來攻擊我們的應(yīng)用梧田。但是其實(shí)proguard還提供了一些其他的功能淳蔼,那我們先來看下到底做了哪些事情。

功能和流程:

功能:shrinker(壓縮),optimizer(優(yōu)化),obfuscator(混淆),preverifier(預(yù)校驗(yàn))

shrink: 檢測(cè)并移除沒有用到的類裁眯,變量鹉梨,方法和屬性;

optimize: 優(yōu)化代碼穿稳,非入口節(jié)點(diǎn)類會(huì)加上private/static/final,沒有用到的參數(shù)會(huì)被刪除存皂,一些方法可能會(huì)變成內(nèi)聯(lián)代碼。

obfuscate: 使用短又沒有語義的名字重命名非入口類的類名逢艘,變量名旦袋,方法名。入口類的名字保持不變它改。

preverify: 預(yù)校驗(yàn)代碼是否符合Java1.6或者更高的規(guī)范(唯一一個(gè)與入口類不相關(guān)的步驟)

流程:

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

項(xiàng)目配置:

android studio會(huì)在build.gradle下配置如下信息:

buildTypes {

release {

minifyEnabled true

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

}

}

其中proguard-android.txt這個(gè)文件是 android sdk提供的一個(gè)默認(rèn)的produard的默認(rèn)配置項(xiàng)存放在{ANDROID_SDK_ROOT}/tools/proguard/ 但是我們對(duì)于發(fā)布的release版本應(yīng)使用proguard-android-optimize.txt疤孕,此文件主要配置的是一些默認(rèn)的proguard配置,而和‘proguard-android’的最大區(qū)別在與‘proguard-android-optimize.txt’中開啟了Proguard optimize的選項(xiàng)(optimize是Proguard的一項(xiàng)功能)

問題原因:

由于proguard-android配置如下導(dǎo)致主功能optimize央拖,preverify沒執(zhí)行

-dontoptimize

-dontpreverify

注意點(diǎn):

1.三方庫已經(jīng)混淆的庫祭阀,需要在主項(xiàng)目添加keep不再進(jìn)行二次混淆

2.反射獲取對(duì)象和方法要保證不被混淆。

3.反射三方庫的混淆方法和對(duì)象存在風(fēng)險(xiǎn)不建議這么使用

4.aar和添加獨(dú)立module的時(shí)候檢查是否添加了不必要的混淆

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鲜戒,一起剝皮案震驚了整個(gè)濱河市柬讨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌袍啡,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件却桶,死亡現(xiàn)場(chǎng)離奇詭異境输,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)颖系,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門嗅剖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嘁扼,你說我怎么就攤上這事信粮。” “怎么了趁啸?”我有些...
    開封第一講書人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵强缘,是天一觀的道長(zhǎng)督惰。 經(jīng)常有香客問我,道長(zhǎng)旅掂,這世上最難降的妖魔是什么赏胚? 我笑而不...
    開封第一講書人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮商虐,結(jié)果婚禮上觉阅,老公的妹妹穿的比我還像新娘。我一直安慰自己秘车,他們只是感情好典勇,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著叮趴,像睡著了一般割笙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上疫向,一...
    開封第一講書人閱讀 52,736評(píng)論 1 312
  • 那天咳蔚,我揣著相機(jī)與錄音,去河邊找鬼搔驼。 笑死谈火,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的舌涨。 我是一名探鬼主播糯耍,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼囊嘉!你這毒婦竟也來了温技?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤扭粱,失蹤者是張志新(化名)和其女友劉穎舵鳞,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體琢蛤,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蜓堕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了博其。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片套才。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖慕淡,靈堂內(nèi)的尸體忽然破棺而出背伴,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布傻寂,位于F島的核電站息尺,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏崎逃。R本人自食惡果不足惜掷倔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望个绍。 院中可真熱鬧勒葱,春花似錦、人聲如沸巴柿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽广恢。三九已至凯旋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钉迷,已是汗流浹背至非。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留糠聪,地道東北人荒椭。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像舰蟆,于是被迫代替她去往敵國(guó)和親趣惠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,331評(píng)論 25 707
  • Android插件化基礎(chǔ)的主要內(nèi)容包括 Android插件化基礎(chǔ)1-----加載SD上APKAndroid插件化基...
    隔壁老李頭閱讀 7,122評(píng)論 13 48
  • 1.What and why身害? What? 代碼混淆(Obfuscated code)亦稱花指令味悄,是將計(jì)算機(jī)程序的...
    言者無知_n4c閱讀 2,348評(píng)論 0 1
  • http://www.reibang.com/p/158aa484da13 本文首發(fā)于我的個(gè)人公眾賬號(hào),同時(shí)會(huì)在個(gè)...
    不排版閱讀 715評(píng)論 0 3
  • 作者:陸琪 當(dāng)一個(gè)人要離開你的時(shí)候塌鸯,他說的任何理由都是謊言侍瑟。 前幾天去做電視節(jié)目,有個(gè)男人一直向女孩逼婚丙猬,而女孩因...
    a紅霞Li閱讀 166評(píng)論 0 0