解決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哈哈~!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章