注:jar混淆包要把对外的接口全部保护起来,混淆对内的代码
说明:以下配置代码也是引用自别处,但具体地址找不到了。
第一步:配置build.gradle
def SDK_BASENAME = "lib_iso8583";
def SDK_VERSION = "_v1.0.0";
def sdkDestinationPath = "build/outputs/jar/";
def zipFile = file('build/intermediates/bundles/default/classes.jar')
task deleteBuild(type: Delete) {
delete sdkDestinationPath + SDK_BASENAME + SDK_VERSION + ".jar"
}
task makeJar(type: Jar) {
from zipTree(zipFile)
from fileTree(dir: 'src/main', includes: ['assets/**']) // 打包assets目录下的所有文件
baseName = SDK_BASENAME + SDK_VERSION
destinationDir = file(sdkDestinationPath)
}
makeJar.dependsOn(deleteBuild, build)
第二步:设置代码混淆保护
根据实际情况
#忽略警告
-ignorewarnings
#保证是独立的jar,没有任何项目引用,如果不写就会认为我们所有的代码是无用的,从而把所有的代码压缩掉,导出一个空的jar
-dontshrink
#保护泛型
-keepattributes Signature
-optimizationpasses 5
-dontusemixedcaseclassnames
-keep class com.centerm.iso8583.bean.**{*;}
-keep enum com.centerm.iso8583.enums.**{*;}
-keep class com.centerm.iso8583.impl.**{*;}
-keep interface com.centerm.iso8583.inf.**{*;}
-keep class com.centerm.iso8583.parse.**{*;}
-keep class com.centerm.iso8583.ISOConfig
-keep public class * extends android.app.Fragment
-keep public class * extends android.app.Activity
-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 * extends android.support.v4.**
-keep public class com.android.vending.licensing.ILicensingService
-keep class com.centerm.iso8583.util.BCDUtil{
public *;
}
-keep class com.centerm.iso8583.MessageFactory{
public *;
}
-keep class com.centerm.iso8583.IsoMessage{
public byte[] getAllMessageByteData();
}
第三步:在terminal中执行:gradlew makeJar