初步瞭解android混淆,以與JS的交互爲例

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

#參考連接:http://www.jianshu.com/p/f3455ecaa56e

相關文章
相關標籤/搜索