pengwei1024 / JsBridge

A simpler, extendable bidirectional communication Frame between Android WebView and Javascript
https://github.com/pengwei1024/JsBridge/wiki
Apache License 2.0
643 stars 88 forks source link

Release混淆编译问题 #15

Closed azhu003 closed 6 years ago

pengwei1024 commented 6 years ago

@zcm-hu 这个和JsBridge没有关系吧,这应该是Android UI上的问题?

azhu003 commented 6 years ago

@pengwei1024 尴尬,好像提issue 提错项目了... 不好意思。 大佬的JsBridge 很好用,已经集成在项目里面去了,顺便问一下,我开启了混淆
-keep public class com.apkfuns.jsbridge.*{;} -keep class extends com.apkfuns.jsbridge.module.JsModule 在Release包里面还是注入失败了,和混淆算法有关系吗 我只用了-optimizations !code/simplification/arithmetic,!field/,!class/merging/* 这个

pengwei1024 commented 6 years ago

目前的信息可能不太好定位。你可以根据TAG JsBridgeDebug 过滤下有没有什么错误信息。或者用chrome://inspect/#devices 看下有没有注入

azhu003 commented 6 years ago

D/JsBridgeDebug: Protocol:JSBridge, LoadReadyMethod:onJSBridgeReady, moduleSize:1 D/JsBridgeDebug: onInjectJs finish

chrome://inspect/#devices js报错了 VM17:1 TypeError: JSBridge.article.loadDetails is not a function at window.onJSBridgeReady (details.js:2) at JB_7b57993.OnJsBridgeReady (:1:818) at :1:1326

azhu003 commented 6 years ago

我再检查检查看是不是其他混淆出问题了

azhu003 commented 6 years ago

大佬,我下载你的这个demo 混淆后运行 也是找不到native注册的方法。能帮忙看看吗

pengwei1024 commented 6 years ago

@zcm-hu 之前sample的proguard-rules.pro写的不完整,我补充了下测试混淆没有问题。你再试试?

pengwei1024 commented 6 years ago

@zcm-hu sorry, 之前混淆写错了,因为集成JsModule的方法都是被反射调用的,所以混淆过程中全部去掉了。改成下面这样就行了

-keep public class com.apkfuns.jsbridge.**{*;}
-keep class * extends com.apkfuns.jsbridge.module.JsModule{*;}
azhu003 commented 6 years ago

非常感谢,已经弄好了。