1. 程式人生 > >解決Android簽名混淆後WebView與JS互動失效的問題

解決Android簽名混淆後WebView與JS互動失效的問題

最近做了個網頁端微信支付的小功能,測試版還好好的,混淆打包後,寫的方法webview無法呼叫,意識到混淆除了問題,於是在網上找了一些大神的解決方案,再根據自己的實際解決過程,列出來一個完整的解決方法。

Android4.2以上版本呼叫js介面需要在方法使用宣告@JavascriptInterface(微信支付相關JS互動程式碼如下)

//新增呼叫微信支付的介面
myWebView.addJavascriptInterface(new WxPayPlugin(), "wxPayAction");

    /**
     * 微信支付介面
     */
    private class WxPayPlugin {
        @SuppressWarnings("unused")
        @JavascriptInterface
        public void wxPay(String content) {}}}
,然後混淆時可能會弄丟該宣告導致,程式無法呼叫js,需要繼續在proguard-rules檔案中新增條件

-keepattributes *Annotation*

-keepattributes *JavascriptInterface*

當然也要對具體的互動相關類和方法進行配置

-keepclassmembers class xxxx.MainActivity$WxPayPlugin {
    public *;
}
-keep public class xxxx.MainActivity$WxPayPlugin{
    public void *(java.lang.String);
}

以上配置完成,再打包簽名,問題解決O(∩_∩)O哈哈~!