资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

flutter集成,Flutter集成vue

Xcode 项目集成flutter

一、cocopods版本升到1.10.0以上

成都创新互联专注于启东网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供启东营销型网站建设,启东网站制作、启东网页设计、启东网站官网定制、重庆小程序开发公司服务,打造启东网络公司原创品牌,更为您提供启东网站排名全网营销落地服务。

二、podfile添加这些(flutter_module路径和.git路径相同)

三、命令行cd到 flutter_module 下,执行 flutter pub get 

四、pod下面添加“  install_framework "${PODS_ROOT}/../../flutter_module/.ios/Flutter/App.framework"  ” 

iOS(Swift版)Flutter集成关键步骤

1.在项目目录执行 flutter create -t module XXX(flutter模块名) ;

2.修改Podfile,设置path,关联podhelper.rb,注意采用 load File.join() ,不采用之前的eval语句,在target do下install;

3.执行pod install;

4.修改AppDelegate为FlutterAppDelegate;

5.初始化并注册FlutterEngine;

6.vscode里flutter attach实时调试;

做完这些正常开发是可以了,至于打包需要更改什么再续。

Flutter集成子module联调的解决方案

这里我们以钱包项目举例

我们先建一个文件夹 Wallets 用来存放所有钱包项目需要联调的 Module 。如下图我们将所有需要联调的 Module 都存放到 Wallets 文件夹中。

做好上面的上面的准备后,我们用AS打开Wallets 文件夹,此时AS导航栏侧我们看到所有需要联调的子Module都在这里了

这时我们看到AS找不我们的入口文件

所以我们需要给AS设置一下,告诉AS我们的入口文件在哪里,点击上图红框选中的部分弹出下面的对话框

点击上图中箭头指向的+,弹出下面对话框

选择展开所有列表,选中Flutter,如下图所示

在弹出的对话框中按图中标注的操作

在弹出的对话框中按图中标注的操作

上面操作都完成之后回到下面的对话框可以看到Fix已经没有了,然后再按下图中所示操作

都操作好后就回到了AS开发主界面了,可以看到主界面上的入口文件已经显示了,运行按钮也可以点击了

Flutter Android端集成排坑 - armeabi 适配 & FlutterBoost

Flutter可以算是当下最火热的新技术之一,我现在所在团队也准备将Flutter技术应用到线上工程中。

关于混合工程,官方文档其实写的已经比较清楚了,按着文档走一般问题不大,

但是有一点值得注意的是,Flutter工程引入的库的gradle的 buildTypes 要与原工程保持一致,如果不一致需要手工添加。

进入正题,现在Flutter官方默认只提供armeabi-v7a、arm64-v8a、x86和x86-64,其中x86和x86-64是为模拟器准备的。目前我们使用的SDK大部分只使用了armeabi架构,直接使用我们会遇见找不到 libflutter.so,libapp.so 的情况,所以我们需要对FlutterSDK做一定的改造。

首先我们要了解下Flutter编译产物,因为不同版本产物是不同的,这里我们只针对Flutter 1.9.1-hotfixes来说。除了资源文件之外,Flutter打包会生成两个非常重要的so库,他们分别是 libflutter.so,libapp.so 。其中 libflutter.so 是Flutter的SDK产物而 libapp.so 正是我们编写的dart文件的产物。默认情况下,这两个文件都会出现在armeabi-v7a中,因此我们要作出对应的改造。

libflutter.so 位于FlutterSDK中,这里顺带提一句,除了这对不同CPU架构,它还分为Debug版和Release版,它们的区别在于Debug是为JIT编译方式打造的,体积较大而Release是为AOT编译方式打造的,体积很小。对 libflutter.so 的改造,只要将其移动文件路径即可,运行以下脚本即可,此脚本来自美团分享的Flutter文章。

移动完了 libflutter.so 之后我们打包发现, libapp.so 仍然会出现在armeabi-v7a中,所以第二部我们就是移动 libapp.so 。这个需要更改 flutter.gradle ,我们在 flutter.gradle 的45行可以看到如下定义,它定义了我们的环境。

在524行我们可以看到,abiValue的取值就是根据上述定义值。

所以结论很简单,只要将

private static final String ARCH_ARM32 = "armeabi-v7a";

改为

private static final String ARCH_ARM32 = "armeabi";

就可以完成对与 libflutter.so 的移动。

前期工作我们都做好了,打成aar就非常简单了

直接使用 flutter build aar --target-platform android-arm

打出来后可以解压检查下 libflutter.so,libapp.so 是否都在armeabi文件夹下即可。

说完了armeabi适配问题,这里下说下有关于有关于FlutterBoost的接入。这个东西接入有两点要注意。

在主app内加上即可,常规操作,强制统一support包的版本号

注释flutter.gradle第655行。因为编译过程中,会去初始化插件项目的buildType下面的debug配置,而插件项目下并未配置debug,导致报错。

如果发现文章中有错误或者有更好的解决方案欢迎指正留言,当然如果本篇文章帮助你解决了问题,也不要吝啬你的感谢。谢谢各位。


分享题目:flutter集成,Flutter集成vue
浏览路径:http://www.cdkjz.cn/article/dsijiso.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220