首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Proguard阻止WebView中的Javascript工作

Proguard阻止WebView中的Javascript工作
EN

Stack Overflow用户
提问于 2013-07-23 16:33:19
回答 1查看 4.6K关注 0票数 8

我有一个类JSBridge (一个内部类),它是一个javascript接口:

代码语言:javascript
复制
private class JsBridge implements JsCallback {

    /**
     * @param handlerName method required
     * @param jsonData    data passed through from javascript
     * @param jsCallback  A callback to trigger when handler specified by handlername has finished, could be null
     */
    @JavascriptInterface
    public void callHandler(final String handlerName, final String jsonData, final String jsCallback) {
        Log.d(App.TAG, "Bridge call from JS,  received " + handlerName);
    }

    @JavascriptInterface
    public void onPageLoad(final String pageName) {
        Log.d(App.TAG, "Bridge call from JS,  received onPageLoad - we have the page name " + pageName);
    }

这是很好的工作,直到我做了一个发行版与保护程序构建。我尝试跟随其他一些这样的答案,并将以下行添加到我的pro卫士文件中,但这并没有帮助。结果是我得到回调的调试版本,没有回调的发布版本。

代码语言:javascript
复制
-keep public class * implements com.mixcloud.player.view.JsCallback

-keepclassmembers class * implements com.mixcloud.player.view.JsCallback {
    <methods>;
}
-keep public class * implements com.mixcloud.player.view.JsCallback

-keepattributes *Annotation*
-keepattributes JavascriptInterface
-keep public class com.mixcloud.player.view.JSRefreshWebView
-keep public class com.mixcloud.player.view.JSRefreshWebView$JsBridge
-keep public class * implements com.mixcloud.player.view.JSRefreshWebView$JsBridge
-keepclassmembers class * implements com.mixcloud.player.view.JSRefreshWebView$JsBridge {
    <methods>;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-28 13:06:45

如果您的Javascript接口方法使用@JavascriptInterface进行注释,则可以使用

代码语言:javascript
复制
-keepclassmembers class * {
    @android.webkit.JavascriptInterface <methods>;
}
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17815932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档