一,首先需要混淆代碼,通用混淆如下
-optimizationpasses5#指定代碼壓縮級別
-dontusemixedcaseclassnames#混淆時不會產生形形色色的類名
-dontskipnonpubliclibraryclasses#指定不忽略非公共類庫
-dontpreverify#不預校驗,如果需要預校驗,是-dontoptimize
-ignorewarnings#屏蔽警告
-keepattributesSignature
-verbose#混淆時記錄日志
-optimizations!code/simplification/arithmetic,!field/*,!class/merging/*#優(yōu)化
#禁止混淆的類
-keeppublic class * extends android.app.Activity
-keeppublic class * extends android.app.Application
-keeppublic class * extends android.app.Service
-keeppublic class * extends android.content.BroadcastReceiver
-keeppublic class * extends android.content.ContentProvider
-keeppublic class * extends android.preference.Preference
-keeppublic class com.android.vending.licensing.ILicensingService
-keepclass android.support.v7.25.3.1{*;}#過濾android.support.v7注意這里v4還是v7要看gradle里面compile了那個擴展包
-keepinterface android.support.constraint.**{*;}
#參數來保持第三方庫中的類而不亂,-dontwarn和-keep結合使用,
#意思是保android.net.**這個包里面的所有類和所有方法而不混淆,接著還叫ProGuard不要警告找不到com.xx.bbb.這個包里面的類的相關引用
-dontwarncom.inuker.bluetooth.library.**
#不參加混淆的package
-keepclass com.djlm.ble.intface.**
#該類里面的方法不參加混淆
-keepclass com.djlm.ble.tools.**{public *;}
-keepclass com.djlm.ble.util.**{public *;}
-keepclass com.djlm.ble.server.**{public *;}
-keepclass com.djlm.ble.cache.**{public *;}
-keepclass com.djlm.ble.intface.**{*;}
#-keep class com.djlm.ble.intface.ReadSimInfoCallBack{*;}
#-keep class com.djlm.ble.intface.ScrapCardResetListener{*;}
#-keep class com.djlm.ble.intface.WriteCardListener{*;}
#保留我們自定義控件(繼承自View)不被混淆
-keepclasseswithmembernamesclass *{
native ;
}
#保留我們自定義控件(繼承自View)不被混淆
-keepclasseswithmembernamesclass *{
native ;
}
#對于帶有回調函數的onXXEvent、**On*Listener的,不能被混淆
-keepclassmembersclass *{
void *(**On*Event);
void *(**On*Listener);
}
二,打jar包的關鍵代碼




三,一些心得
? ? ? 1,依賴的第三方打進jar包會報找不到類的錯? ? // compile'com.inuker.bluetooth:library:+'
? ? ? ? ? ? ? 解決:最好找到該依賴的jar包,暫時沒找到其他好的解決辦法
? ? ? ?2,so文件不用打進jar包,提供給對方即可