js调用android方法混淆,初步了解android混淆,以与JS的交互为例

android的proguard混淆,可以在project.properties文件里面,通过proguard.config=proguard.cfg来指定,proguard.cfg就是混淆文件。

#1.proguard.cfg也就是混淆文件,在这里面配置混淆的信息

#2.project.properties 里面指定打包时的混淆配置文件位置

#加这个是为了项目用到的jar包在混淆后不会产生错误

-libraryjars libs/android-support-v4.jar

#加这些dont什么的代码,可以让打包的时候,不会报那一堆乱七八糟的错误

-dontskipnonpubliclibraryclassmembers

-dontwarn org.apache.commons.**

举个例子,以与JS的交互为例,以点击用户头像能否跳转到该用户的网页判断混淆的效果。

//设置webview可以与JS交互

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值