场景:
flutter 项目,使用插件flutter_webview_plugin的webView组件,与js进行交互,通过JavascriptChannel的onMessageReceived获取js的传递的参数。
问题:
开发模式下,安卓和IOS调用都正常显示,但是打包之后,安卓不起作用。
解决路程:
通过查看github上的issues,发现有人提出了这个问题,然后就根据提出的解决方案,进行了处理,因为是个iOS开发者,遇到了其他问题,所以记录下来,以供查看。
问题的大概思路:
通过js传数据过来的json对象被混淆,无法转换json解析成对象。
解决方式
在你的定义的插件里面build.gradle配置如下,增加独立的混淆配置。
具体步骤:
1.在项目的android/app/build.gradle文件中,设置混淆配置
buildTypes {
release {
// 添加混淆配置文件,设置不需要混淆的部分
consumerProguardFiles 'proguard-rules.pro'
}
}
2.在build.gradle文件的同等目录,添加proguard-rules.pro文件
3.在proguard-rules.pro文件中,添加代码"-keep class com.flutter_webview_plugin.** { *; }"
-keep class com.flutter_webview_plugin.** { *; }
4.重新build,运行就可以了。
参考资料
flutter_webview_plugin issues
flutter 自定义第三方插件 使用后混淆问题
Android aar中增加独立的混淆配置
Android混淆详解