天天看點

android項目混淆打包注意事項

最近做公司的項目,熬到了産品結束,為了代碼的安全,于是自己開始琢磨着如何進行代碼混淆,以下是自己的一些總結(通過一兩天的搜尋、看部落格,自己終于實作了代碼混淆,這是本人第一次混淆打包,其過程出現了很多錯誤,網上的所謂混淆的方法均試過,一些都或多或少存在問題,是以自己列舉其中一些注意事項)

首先,android代碼的混淆是為了進行對代碼安全的處理,使即使通過反編譯也難看懂;還有以下配置隻是些基本配置,根據具體的報錯及代碼結構會有不同的配置資訊,隻能繼續搜尋解決了。

對android項目的混淆,隻需配置檔案project.properties和proguard-project.txt,都在項目的根目錄下。

android項目混淆打包注意事項

配置project.properties檔案:

1.SDK版本:如果SDK 2.3之後的(我的項目是SDK 4.0的)隻需解注掉proguard.config的配置即可,(具體的内容也應與實際生成項目時該檔案的内容而定),如下:

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

若是2.3之前的SDK,那麼配置資訊是:

proguard.config=proguard.cfg

2.配置proguard-project.txt檔案:

第三方lib包的添加語句:-libraryjars libs/your_useredjar

對包中所有類及方法不進行混淆處理語句:

-keep class com.cn21.cloudsalbum.client.**{*;}

對類及類中方法(這裡舉了公有方法及字段的例子)不進行混淆處理語句:

-keepclassmembers class fqcn.of.javascript.interface.for.webview { public *;}

忽略所有的錯誤警告:

-ignorewarnings

對某包下警告不提示:

-dontwarn android.support.**

具體舉例如下(一般我們的項目都會攜帶有support-v4包):

#-ignorewarnings //這裡注釋掉了對所有的警告錯誤

-libraryjars libs\android-support-v4.jar

-libraryjars libs\Library.jar

#-dontwarn android.support.**

-keep class android.support.v4.**{*;}

-keep class android.annotation.**{*;}

# 配置自編寫的包不進行混淆

-keep class com.cn21.cloudsalbum.client.**{*;}

-keep class com.cn21.cloudsalbum.client.json.**{*;}