欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Android Java混淆(ProGuard)

系統 2393 0

?

ProGuard 簡介

???????ProGuard 是一個 SourceForge 上非常知名的開源項目。官網網址是: http://proguard.sourceforge.net/

?????? Java 的字節碼一般是非常容易反編譯的。為了很好的保護 Java 源代碼,我們往往會對編譯好的 class 文件進行混淆處理。 ProGuard 的主要作用就是混淆。當然它還能對字節碼進行縮減體積、優化等,但那些對于我們來說都算是次要的功能。

??????? 引用 ProGuard 官方的一段話來介紹就是:

?????? ProGuard?is a free Java class file shrinker, optimizer, obfuscator, and preverifier. It detects and removes unused classes, fields, methods, and attributes. It optimizes bytecode and removes unused instructions. It renames the remaining classes, fields, and methods using short meaningless names. Finally, it preverifies the processed code for Java 6 or for Java Micro Edition.


Android Eclipse
開發環境與ProGuard

??????? Android 2.3 以前,混淆 Android 代碼只能手動添 proguard 來實現代碼混淆,非常不方便。而 2.3 以后, Google 已經將這個工具加入到了 SDK 的工具集里。具體路徑: SDK\tools\proguard 。當創建一個新的 Android 工程時,在工程目錄的根路徑下,會出現一個 proguard 的配置文件 proguard.cfg 。也就是說,我們可以通過簡單的配置,在我們的 elipse 工程中直接使用 ProGuard 混淆 Android 工程。

??????? 具體混淆的步驟非常簡單。首先,我們需要在工程描述文件 default.properties 中,添加一句話,啟用 ProGuard 。如下所示:

?

?

?1 ?#?This?file?is?automatically?generated?by?Android?Tools.
?2 ?#?Do?not?modify?this?file?--?YOUR?CHANGES?WILL?BE?ERASED!
?3 ?#?
?4 ?#?This?file?must?be?checked?in?Version?Control?Systems.
?5 ?#?
?6 ?#?To?customize?properties?used?by?the?Ant?build?system?use,
?7 ?#?"build.properties",?and?override?values?to?adapt?the?script?to?your
?8 ?#?project?structure.
?9 ?#?Indicates?whether?an?apk?should?be?generated?for?each?density.
10 ?split.density=false
11 ?#?Project?target.
12 ?target=android-10
13 ?proguard.config=proguard.cfg
14 ?


??????? 這樣, Proguard 就可以使用了。當我們正常通過 Android Tools 導出 Application Package 時, Proguard 就會自動啟用,優化混淆你的代碼。

?

?

?

??????
????導出成功后,你可以反編譯看看混淆的效果。一些類名、方法名和變量名等,都變成了一些無意義的字母或者數字。證明混淆成功!


proguard.cfg
配置

??????? 稍微深入想一下混淆后的結果,你就會發現,如果一些提供給外部的類、方法、變量等名字被改變了,那么程序本身的功能就無法正常實現。那么 Proguard 如何知道哪些東西是可以改名,而哪些是不能改變的呢?

??????? 這個是靠 proguard.cfg 文件來進行配置的。 Android 工程中默認自動生成的 proguard.cfg 已經針對 Android 的一般情況進行了配置,我們打開這個配置文件。內容大概如下:

?

?

?1 ?-optimizationpasses?5
?2 ?-dontusemixedcaseclassnames
?3 ?-dontskipnonpubliclibraryclasses
?4 ?-dontpreverify
?5 ?-verbose
?6 ?-optimizations?!code/simplification/arithmetic,!field/*,!class/merging/*
?7 ?-keep?public?class?*?extends?android.app.Activity
?8 ?-keep?public?class?*?extends?android.app.Application
?9 ?-keep?public?class?*?extends?android.app.Service
10 ?-keep?public?class?*?extends?android.content.BroadcastReceiver
11 ?-keep?public?class?*?extends?android.content.ContentProvider
12 ?-keep?public?class?*?extends?android.app.backup.BackupAgentHelper
13 ?-keep?public?class?*?extends?android.preference.Preference
14 ?-keep?public?class?com.android.vending.licensing.ILicensingService
15 ?
16 ?-keepclasseswithmembernames?class?*?{
17 ?????native?<methods> ;
18 ?}
19 ?
20 ?-keepclasseswithmembernames?class?*?{
21 ?????public?<init>(android.content.Context,?android.util.AttributeSet) ;
22 ?}
23 ?
24 ?-keepclasseswithmembernames?class?*?{
25 ?????public?<init>(android.content.Context,?android.util.AttributeSet,?int) ;
26 ?}
27 ?
28 ?-keepclassmembers?enum?*?{
29 ?????public?static?** [] ?values() ;
30 ?????public?static?**?valueOf(java.lang.String) ;
31 ?}
32 ?
33 ?-keep?class?*?implements?android.os.Parcelable?{
34 ???public?static?final?android.os.Parcelable$Creator?* ;
35 ?}
36 ?


????它主要保留了繼承自 Activity Application Service BroadcastReceiver ContentProvider BackupAgentHelper Preference ILicensingService 的子類。因為這些子類,都是可能被外部調用的。

另外,它還保留了含有 native 方法的類、構造函數從 xml 構造的類(一般為 View 的子類)、枚舉類型中的 values valueOf 靜態方法、繼承 Parcelable 的跨進程數據類。

??????? 在實際的一個工程項目中,可能 Google 自動生成的配置不能勝任我們的混淆工作。所以,我們往往需要自己編寫一些 ProGuard 配置。這方面的資料在官網的 Manual -> Usage 里有詳細說明。大家可以研究一下。

?

? 轉載: http://www.blogjava.net/zh-weir/archive/2011/07/12/354190.html ?

?

Android Java混淆(ProGuard)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 99人中文字幕亚洲区 | 日韩成人精品在线 | 偷拍小美女洗澡在线播放 | 91精品国产777在线观看 | 丁香六月综合网 | 2019天天操夜夜操 | 天天干影院 | 91成人在线网站 | 欧美一区二区在线播放 | 午夜性色一区二区三区不卡视频 | 婷婷国产成人精品视频 | 狠狠狠色丁香婷婷综合激情 | 亚洲精品美女久久久久 | 94在线成人免费视频 | 欧美一区二区三区精品国产 | 天天综合国产 | 欧美国产中文 | 久久视频这里只精品3国产 色偷偷偷 | 欧美日韩大尺码免费专区 | 伦一区二区三区中文字幕v亚洲 | 国产乱人乱精一区二区视频密 | 国产一区二区精品在线观看 | 不卡一区二区三区四区 | 色婷婷六月天 | 国产精品日韩 | 成人欧美一区二区三区在线播放 | 欧美手机在线观看 | 黑人操亚洲人 | 中文成人在线 | 亚洲精品日本高清中文字幕 | 在线观看高清免费 | 国产人成精品综合欧美成人 | 一级做a爰片欧美一区 | 夜夜爽夜夜叫夜夜高潮漏水 | 成人在线免费视频观看 | 欧美日韩在线看 | 国产一区二区精品在线观看 | 国产精品美女一区二区三区 | 成人免播放器午夜视频 | 色噜噜狠狠色综合欧洲selulu | 成人久久久 |