flutter 与js交互,android在release模式下收不到消息

场景:
flutter 项目,使用插件flutter_webview_plugin的webView组件,与js进行交互,通过JavascriptChannel的onMessageReceived获取js的传递的参数。

问题:
开发模式下,安卓和IOS调用都正常显示,但是打包之后,安卓不起作用。

解决路程:
通过查看github上的issues,发现有人提出了这个问题,然后就根据提出的解决方案,进行了处理,因为是个iOS开发者,遇到了其他问题,所以记录下来,以供查看。


image.png

问题的大概思路:
通过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混淆详解

你可能感兴趣的:(flutter 与js交互,android在release模式下收不到消息)