Android proguard Javascript 接口问题

2024-05-13

我的项目在使用 proguard 进行混淆后因 javascriptinterface 失败

这是包含混淆器配置的一些建议的链接,但它在我的情况下不起作用

http://groups.google.com/group/android-developers/browse_thread/thread/f889e846fbf7ec3f?pli=1 http://groups.google.com/group/android-developers/browse_thread/thread/f889e846fbf7ec3f?pli=1

因此,来自 Javascript 的调用与关联的 Java 方法松散绑定

我的 proguard 配置与此相关

-keep public class com.trans_code.android.JavascriptCallback 
-keep public class * implements com.trans_code.android.JavascriptCallback 
-keepclassmembers class * implements com.trans_code.android.JavascriptCallback { 
    <methods>; 
} 
-keepclassmembers class * implements JavascriptCallback { 
    void on*(***);
} 
-keep public class com.trans_code.** {
  public protected *;
}

-keepclasseswithmembernames class com.MyActivity$JavascriptInterface

-keepclasseswithmembernames class com.MyActivity$JavascriptInterface {
    public protected *;
}

如果有人知道如何配置混淆器以使其过滤掉相关的方法和类,这将对我有很大帮助


该原始线程中的类名特定于该用户 Java 类,而不是所有 javascript 接口通用的。您实现的 javascript 接口只是一个简单的基类。

您需要更改它们以匹配您的接口类的名称。

例如,根据原始线程中的示例,示例代码 WebViewDemo 的正确配置将是:

-keep public class com.google.android.webviewdemo.WebViewDemo.DemoJavaScriptInterface
-keep public class * implements com.google.android.webviewdemo.WebViewDemo.DemoJavaScriptInterface 
-keepclassmembers class * implements com.google.android.webviewdemo.WebViewDemo.DemoJavaScriptInterface { 
    <methods>; 
} 

由于绑定的工作方式,真正需要做的就是防止从 javascript 调用的内部方法的名称被混淆,但防止类名被混淆也没什么坏处。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android proguard Javascript 接口问题 的相关文章

随机推荐

  • 使用UDID创建唯一的用户身份

    我正在开发一个 iPhone 应用程序 它与服务器通信以存储和交换数据 因为我想让它尽可能简单 所以我想避免用户帐户的注册 或者也可能使用密码 是否有可能 并且允许 获取 iPhone 设备的 UDID 并制作例如 它的 MD5 哈希值 我
  • 如何在不使用数据库的情况下保存应用程序的配置??? (使用简单的文本文件)

    我需要保存一个简单的字段来配置我的应用程序 因此 我不会使用数据库 它只是一个字段 我需要在文件中保存该字段的 true 或 false 值 并且每次都会有一部分我的应用程序想要检查是否属实 他们必须检查此文本文件 而不是打开与数据库的连接
  • 如何对 Firebase 中托管的静态网站进行 IP 白名单? / 是否有用于 Firebase 托管的 WAF?

    我有一个在 Firebase 中托管的静态网站 我可以很好地附加一个自定义域 我想将对我的网站的访问限制在特定范围的 IP 范围内 我知道在 GCP 中 Google Cloud Armor 可以做到这一点 但 Cloud Armor 仅适
  • 如何预览 Git 中的隐藏内容?

    我想检查一个存储 并找出如果我将其应用于当前状态的工作树 它会发生什么变化 我知道我可以对存储进行 git diff 但这向我展示了工作树和存储之间的所有差异 而我只是想知道存储应用将改变什么 git stash show将向您显示最近存储
  • 继承层次结构中接口与实现的分离(C++ 新手)

    我正在想办法如何安排一些课程 这就是我到目前为止所得到的 继承层次结构的顶层 自然 是 T T h namespace foo class T public virtual void method1 std string a paramet
  • 如何使用 Vue.js 向数组(数据)中的所有对象添加属性?

    背景 我在 data 中有一个数组 其中填充了来自后端的对象 如果 GET 请求检索 6 个对象 这 6 个对象将在数组中更新 Problem 我已经了解需要 vm set 来向对象添加属性 但是如何为数组中的所有对象添加属性呢 我想改变
  • 有限字母字符串

    我有一个很长的字符串 字母表有限为 4 个 我可以以不同的方式存储该字符串 以便它占用更少的空间 因为它的字母表比普通字符串小 在我的代码中 我从不编辑这个字符串 只访问索引处的字符 如果对基因组比对算法有帮助的话 字母表是 ACTG No
  • 如何在 Mongoose 中执行查找查询?

    我在 mongodb 中有一组电子书数据 例如 id ObjectId 58b56fe19585b10cd42981d8 cover path D Ebooks uploads ebooks cover 1488285665748 img1
  • 如何使redis中的“HSET”子键“过期”?

    我需要使 Redis 哈希中所有超过 1 个月的密钥过期 这不可能 https github com antirez redis issues 167 issuecomment 2559040 为了保持 Redis 简单 https git
  • 如何在 IPython 中设置 markdown 链接的基本 url?

    我很高兴地设置 在我的 IPython html 笔记本 IPython 0 12 的 Markdown 单元中 以便能够将链接缩写为 wiki documentation doc html 在 Markdown 单元格中 但这使得保存笔记
  • Subversion 将未修改的文件标记为已修改

    这是我在使用 Subversion 时遇到的一个奇怪的问题 当从开发分支合并到主干 或返回 时 Subversion 会将许多文件标记为已更改 而它们没有任何更改 发生的情况如下 在我的分支中 我提交了 1 个修改过的文件 在主干中我合并了
  • 将输入值保存到本地存储并在不同页面上检索它

    我有一个包含 3 个不同页面的网页 page1 page2 和 page3 在第一页上 用户将在文本框中输入他的名字 我想将该值存储到本地存储中 以便在第 2 页和第 3 页上再次使用 我什至无法在第 1 页上检索它 难道我做错了什么 而且
  • 无界通配符类型在运行时如何工作?

    我知道无界通配符类型将被删除并替换为对象 vy 类型擦除 无界通配符类型是可具体化类型 其类型信息在运行时完全可用 我知道两者之间的区别List List List list new ArrayList
  • 在 Android 上将大位图文件的大小调整为缩放的输出文件

    我的文件中有一个大位图 例如 3888x2592 现在 我想将该位图大小调整为 800x533 并将其保存到另一个文件中 我通常会通过调用来缩放位图Bitmap createBitmap方法 但它需要一个源位图作为第一个参数 我无法提供它
  • 如何在 JavaScript 中暂停函数? [复制]

    这个问题在这里已经有答案了 我在 JavaScript 中有一个很长的函数 我将在某些时候暂停它 我知道我可以使用setTimeout myFunction 100 and clearTimeout 但是 据我所知 使用后setTimeou
  • 未捕获的类型错误:无法在“MutationObserver”上执行“观察”:参数 1 不是“节点”类型

    所以我下面的代码可以在 jsfiddle 中独立工作 但由于一些奇怪的原因 在将其推送到实时服务器后 我始终收到此错误 并且我不明白为什么 error mycodewitherror js 23 Uncaught TypeError Fai
  • PHP DateTime::修改加减月份

    我一直在与DateTime class http www php net manual en class datetime php最近在添加月份时遇到了我认为是一个错误 经过一番研究后 看来这不是一个错误 而是按预期工作 根据查到的文档he
  • 如何编写自己的CasperJS模块?

    例如 我有一个经常需要执行的步骤 例如在某些测试之前用户登录 如何为 CasperJS 编写可重用的代码块 他们的扩展 CasperJS 的文档只为一个文件编写 Thanks 这是一个简单的方法 如果不熟悉 CoffeeScript 请在
  • 如何链接到 App Store (iTunes) 中我的应用程序?

    我希望我的应用程序中有一项功能 用户可以使用我的应用程序的 iTunes URL 向朋友发送电子邮件 这怎么可能 Thanks 您可以创建更简单 更合乎逻辑的 App Store 链接 而不是通常看到的又长又混乱的 URL iTunes S
  • Android proguard Javascript 接口问题

    我的项目在使用 proguard 进行混淆后因 javascriptinterface 失败 这是包含混淆器配置的一些建议的链接 但它在我的情况下不起作用 http groups google com group android devel