android的proguard混淆,能够在project.properties文件里面,经过proguard.config=proguard.cfg来指定,proguard.cfg就是混淆文件。android
#1.proguard.cfg也就是混淆文件,在这里面配置混淆的信息web
#2.project.properties 里面指定打包时的混淆配置文件位置apache
#加这个是为了项目用到的jar包在混淆后不会产生错误安全
-libraryjars libs/android-support-v4.jar测试
#加这些dont什么的代码,能够让打包的时候,不会报那一堆乱七八糟的错误ui
-dontskipnonpubliclibraryclassmembersthis
-dontwarn org.apache.commons.**ip
举个例子,以与JS的交互为例,以点击用户头像可否跳转到该用户的网页判断混淆的效果。webview
//设置webview能够与JS交互get
WebView.getSettings().setJavaScriptEnabled(true);
//设置JS能够经过"Android"这个名称来条用 WebToHpagerInterface(this)这个类里面android的代码
WebView.addJavascriptInterface(new WebToHpagerInterface(this),
"Android");
//js点击调用的类及方法
public class WebToHpagerInterface {
private Context context;
WebToHpagerInterface(Context context) {
this.context = context;
}
//添加注解,与JS安全交互的必要
@JavascriptInterface
public void startHomePagerActivity(int uid) {
Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("uid", uid);
context.startActivity(intent);
}
}
若是在测试中能够与JS进行交互,打包以后却不能够,说明混淆文件里面没有对于JS进行混淆的相关配置,添加以下配置到proguard.cfg混淆文件中
#与JS交互,打包的时候需在混淆文件中加入如下代码,好比去掉下面的东西,打包后的与JS交互的功能就会不起做用
-keep public interface android.webkit.WebChromeClient$CustomViewCallback {
*;
}
-keep public interface android.webkit.ValueCallback {
*;
}
-keep class * implements android.webkit.WebChromeClient {
*;
}
-keepclassmembers class com.example.proguarddemo.WebToHpagerInterface {
public *;
}
-keepattributes *Annotation*
-keepattributes *JavascriptInterface*
打包后就能够正常进行与JS的交互了。