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的交互了。