標籤:android開發 jar 混淆
又是一個不眠夜
問題來了,我們寫個android項目部分代碼想產生jar包,並且將jar包做混淆,不被別人切!
首先講要代碼產生jar包,這個就不多說了。然後找到找到SDK裡的proguardgui.jar(目錄:sdk\tools\proguard\lib\)並開啟。
然後會看到proguard的頁面
第一次點擊Next,然後看下面頁面,點擊Addinput...添加你要混淆的jar包,點擊Add output...是選擇混淆後的jar包儲存目錄。底下的Add...是你jar包所依賴的jar。(塗黑地方是項目不可外露)
然後直接點擊Process,點1按鈕是查看設定檔,點2是儲存設定檔,儲存成xxx.pro(例如test.pro)
然後開啟你儲存的test.pro開始添加你項目中不做混淆的類和方法
然後再次開啟Proguard,添加test.pro
點擊Process,然後可以查看一下配置資訊是否是你修改完的,然後點擊Process!
OK,混淆完成,混淆時可能會出錯,請根據錯誤提示去尋找解決辦法,大部分原因是因為配置時書寫格式錯誤!
-optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify -verbose -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -keep public class * extends android.app.Activity // 繼承activity,application,service,broadcastReceiver,contentprovider....不進行混淆-keep public class * extends android.app.Application -keep public class * extends android.app.Service-keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider-keep public class * extends android.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference-keep public class com.android.vending.licensing.ILicensingService
混淆時請把中文刪掉
-keep class com.lidroid.xutils.** { *; } //整個類都不混淆
-dontwarn com.lidroid.xutils.**
//不混淆的類和方法
-keepclasseswithmembers public final class com.mzc.demo.MyDemo {
public MyDemo(android.content.Context, java.lang.String, android.widget.LinearLayout);
public void openDoor();
}
Android項目將產生的jar包混淆