初步了解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

相关文章
相关标签/搜索