1.混淆問(wèn)題
混淆就是對(duì)發(fā)布出去的程序進(jìn)行重新組織和處理佳遣,使得處理后的代碼與處理前代碼完成相同的功能,而混淆后的代碼很難被反編譯税稼,即使反編譯成功也很難得出程序的真正語(yǔ)義身害。
被混淆過(guò)的程序代碼,仍然遵照原來(lái)的檔案格式和指令集澈缺,執(zhí)行結(jié)果也與混淆前一樣坪创,只是混淆器將代碼中的所有變量、函數(shù)姐赡、類(lèi)的名稱(chēng)變?yōu)楹?jiǎn)短的英文字母代號(hào)莱预,在缺乏相應(yīng)的函數(shù)名和程序注釋的情況下,即使被反編譯项滑,也將難以閱讀依沮,release版的還會(huì)進(jìn)行混淆和用自己的keystore簽名,以防止別人反編譯后重新打包替換你的應(yīng)用枪狂。
同時(shí)混淆是不可逆的危喉,在混淆的過(guò)程中一些不影響正常運(yùn)行的信息將永久丟失,這些信息的丟失使程序變得更加難以理解州疾。
混淆器的作用不僅僅是保護(hù)代碼辜限,它也有精簡(jiǎn)編譯后程序大小的作用。由于以上介紹的縮短變量和函數(shù)名以及丟失部分信息的原因孝治,編譯后jar文件體積大約能減少25%列粪。所以混淆還有縮減apk大小的作用审磁。
2.Release文件比Debug文件小
Release是發(fā)行版本,比Debug版本有一些優(yōu)化,文件比Debug文件小 岂座。Debug是調(diào)試版本态蒂,Debug和Release調(diào)用兩個(gè)不同的底層庫(kù)。
- Debug是調(diào)試版本费什,包括的程序信息更多钾恢。
- 只有Debug版的程序才能設(shè)置斷點(diǎn)、單步執(zhí)行鸳址、使用TRACE/ASSERT等調(diào)試輸出語(yǔ)句瘩蚪。
- Release不包含任何調(diào)試信息,所以體積小稿黍、運(yùn)行速度快疹瘦。