最近做了個網頁端微信支付的小功能,測試版還好好的,混淆打包後,寫的方法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哈哈~!