解決Android簽名混淆後WebView與JS互動失效的問題
阿新 • • 發佈:2018-12-06
最近做了個網頁端微信支付的小功能,測試版還好好的,混淆打包後,寫的方法webview無法呼叫,意識到混淆除了問題,於是在網上找了一些大神的解決方案,再根據自己的實際解決過程,列出來一個完整的解決方法。
Android4.2以上版本呼叫js介面需要在方法使用宣告@JavascriptInterface(微信支付相關JS互動程式碼如下)
//新增呼叫微信支付的介面
myWebView.addJavascriptInterface(new WxPayPlugin(), "wxPayAction");
,然後混淆時可能會弄丟該宣告導致,程式無法呼叫js,需要繼續在proguard-rules檔案中新增條件/** * 微信支付介面 */ private class WxPayPlugin { @SuppressWarnings("unused") @JavascriptInterface public void wxPay(String content) {}}}
-keepattributes *Annotation*
-keepattributes *JavascriptInterface*
當然也要對具體的互動相關類和方法進行配置
-keepclassmembers class xxxx.MainActivity$WxPayPlugin { public *; } -keep public class xxxx.MainActivity$WxPayPlugin{ public void *(java.lang.String); }
以上配置完成,再打包簽名,問題解決O(∩_∩)O哈哈~!