一,首先需要混淆代码,通用混淆如下
-optimizationpasses5#指定代码压缩级别
-dontusemixedcaseclassnames#混淆时不会产生形形色色的类名
-dontskipnonpubliclibraryclasses#指定不忽略非公共类库
-dontpreverify#不预校验,如果需要预校验,是-dontoptimize
-ignorewarnings#屏蔽警告
-keepattributesSignature
-verbose#混淆时记录日志
-optimizations!code/simplification/arithmetic,!field/*,!class/merging/*#优化
#禁止混淆的类
-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包,提供给对方即可