Flutter携程实战

Flutter携程实战

  • 项目运行截图
  • 资源分享
  • 踩坑

最近学习了 Flutter携程实战视频,下面附 资源分享 和 我自己实现的项目码云地址,有一些需要注意的问题跟大家分享一下吧。

项目运行截图

Flutter携程实战_第1张图片

资源分享

链接:https://pan.baidu.com/s/1wxXl0OjAElf72EV82D_ZQQ
提取码:twwb

视频是加密的,需要自己下载Evplayer,激活码在这个文件里面。
在这里插入图片描述
码云地址 :https://gitee.com/detachment_wll/flutter_trip

踩坑

  1. 百度语音集成的时候,一定要注意在控制台领取免费使用额度,不然会一直提示3004错误,下面附截图
    Flutter携程实战_第2张图片
    Flutter携程实战_第3张图片

  2. 然后在自己实现语音插件的时候,视频里的sdk版本比较老,老版本的代码不能用了,FlutterActivity里已经没有公开的registrarFor方法获取PluginRegistry.Registrar

    Flutter携程实战_第4张图片
    MainActivity里面的对应代码修改如下:
    在这里插入图片描述
    附这两部分代码

      //flutter sdk >= v1.17.0 时使用下面方法注册自定义plugin
      AsrPlugin.registerWith(this, flutterEngine.getDartExecutor().getBinaryMessenger());
    
    public static void registerWith(Activity activity, BinaryMessenger binaryMessenger) {
           
        MethodChannel channel = new MethodChannel(binaryMessenger, "asr_plugin");
        AsrPlugin instance = new AsrPlugin(activity);
        channel.setMethodCallHandler(instance);
    }
    
  3. 然后是跟2同样的问题,视频作者在解决启动白屏部分提供的插件,这个插件注册的时候我这边运行老提示有问题,所以我自己按照作者 原本的解决白屏实现的代码 和 开发语音插件的步骤 实现了一个android library module,然后我觉得发布插件之类的挺麻烦的,就没有自己弄github仓库发布,不觉得麻烦的小伙伴可以自己发布之后直接在pubspec.yaml文件中使用自己发布的插件。
    Flutter携程实战_第5张图片
    Flutter携程实战_第6张图片
    dart 部分
    在这里插入图片描述
    Flutter携程实战_第7张图片

  4. 在打包release apk的时候 遇到一个问题 ‘More than one file was found with OS independent path 'lib/armeabi-v7a/libflutter.so’,这个错误是在路径中出现了重复依赖。不知道我理解的是不是有问题,作者视频里在指定要ndk需要兼容的架构说flutter 只支持x86,x86_64,arm64-v8架构的so,因此在对应module的build.gradle文件中配置如下:
    在这里插入图片描述
    然后为了确保确保app与其他插件都依赖的 libflutter.so、libapp.so merge时不冲突 ,在对应module的build.gradle文件中配置如下:
    Flutter携程实战_第8张图片
    然后打包的时候就提示上面的问题了,但是我们没有设置ndk支持armeabi-v7a架构呀,这里有懂的小伙伴发表一下见解,解决方式如下:
    Flutter携程实战_第9张图片
    然后就是打release包的时候,现在ndk支持 armeabi-v7a 或 arm64-v8 哪一种架构在我手机上运行都是没有问题的,但是要注意视频里面作者没有复制 armeabi-v7a 架构的so文件,如果你设置ndk支持 armeabi-v7a 架构,记得复制 armeabi-v7a 文件夹下的so文件到你的工程对应的位置。正是由于视频里面没有复制 armeabi-v7a架构的so包,我ndk设置支持 armeabi-v7a架构的时候,运行百度语音识别的时候 提示 {"sub_error":5001,"error":5,"origin_result":{"sub_error":5001,"error":5,"sn":"","desc":"Can not load so library"},"desc":"Can not load so library"},复制 armeabi-v7a 架构的so文件到工程里就好了

  5. 注意打的release包在模拟器上是无法运行的,目前flutter其中x86系列应该只支持Debug模式,我解压release apk文件后 发现对应的架构下果然没有libfluter.so文件。
    Flutter携程实战_第10张图片
    Flutter携程实战_第11张图片

你可能感兴趣的:(项目分享,android)