基于安卓的Fluter容器及小程序的创建方法技术

技术编号:35856961 阅读:20 留言:0更新日期:2022-12-07 10:44
本发明专利技术公开了基于安卓的Fluter容器及小程序的创建方法,包括以下步骤:修改Flutter SDK或定制Flutter SDK,生成各个工程所对应的小程序安装文件,以及支持小程序运行的主程序安装文件;运行时根据用户的操作下载对应的小程序安装文件,安装并运行;构建Flutter容器;构建多进程的运行环境,使用DartEntryPoint和window.defaultRouteName,判断小程序或APP运行方式,并进行调度。本发明专利技术提供了多进程+Flutter容器方案,可支持同时运行多个小程序应用;小程序退出之后仍然保留之前的运行状态;提供了多种判断当前运行环境是以小程序或独立APP运行的方式。独立APP运行的方式。独立APP运行的方式。

【技术实现步骤摘要】
基于安卓的Fluter容器及小程序的创建方法


[0001]本专利技术属于移动应用
,尤其涉及基于安卓的Fluter容器及小程序的创建方法。

技术介绍

[0002]随着移动业务的快速发展,某个厂商开发的移动APP开发可以达到数十款以上,现有技术中对业务或目标人群进行精细划分,规划出多APP垂直覆盖的策略,不同的角色(工种)使用不同的APP,这样不仅业务更加聚焦,而且APP也可快速迭代。但是随着业务边界延伸,同一个用户可能同时拥有多个角色或者需要参与多项业务,在作业时用户就会需要同时使用到某个厂商的多个APP,多个APP的之间的切换会导致用户的使用成本大大增加,且体验非常不友好。
[0003]解决上述问题,本领域的一般做法是打造超级APP,然后以“小程序”的形式聚合不同的业务程序,比如微信小程序,支付宝小程序等。行业内大部分是以原生为主的混合开发,但一些厂商主要业务的APP都是基于跨平台框架Flutter开发,另外当前业内并没有Android平台基于Flutter的小程序解决方案。
[0004]对于业界其他的小程序方案,如微信、支付宝小程序,基本都是通过WebView的来渲染,但WebView的渲染效果及体验相对于原生实现来说还是有较大差距,相反Flutter这种自绘引擎方式,可以实现接近原生的体验,相对与WebView来说更加高效。

技术实现思路

[0005]基于Flutter版本的小程序框架,以支撑厂商各业务以小程序形式使用,不仅可以低成本迁移并聚合当前业务模块,还可根据用户实际需要下发对应的业务程序。有鉴于此,本专利技术提出了基于安卓的Fluter容器及小程序的创建方法,包括以下步骤:
[0006]修改Flutter SDK或定制Flutter SDK,生成各个工程所对应的小程序安装文件,以及支持小程序运行的主程序安装文件;
[0007]运行时根据用户的操作下载对应的小程序安装文件,安装并运行;
[0008]构建Flutter容器,包括:以Activity作为单个Flutter容器,在主工程中AndroidManifest清单文件中预先注册多个Activity,并指定不同的process;主工程中维护当前运行的小程序与容器的关系:当主工程收到启动某一小程序指令时,首先判断小程序是否已在运行的容器中,如果在则直接启动对应的容器,如果不在,则从未启动的容器中选择一个启动,当新的容器启动之后,发送广播到主程序,主程序更新当前运行的小程序与容器关系;在miniAppActivity启动之后,创建FlutterEngine,并根据需要启动小程序名,将对应的libapp.so的路径以FlutterShellArgs的方式传递给FlutterEngine,以执行Flutter加载对应的小程序代码执行;Flutter容器执行缓存策略:普通情况下,当小程序退出时,将在Activity finish时自动杀掉当前进程以释放资源,如果设置为常驻小程序,将保持容器在后台,下次启动时将改容器重新拉起,以实现快速启动;
[0009]构建多进程的运行环境,使用DartEntryPoint和window.defaultRouteName,判断小程序或APP运行方式,并进行调度。
[0010]进一步的,所述修改Flutter SDK,包括新增小程序编译指令flutter build miniApp,小程序编译指令的编译过程如下:
[0011]编译生成支持主程序APK以及小程序的安装文件;
[0012]修改APK资源编译过程,针对小程序资源移除“package”路径;
[0013]修改APK资源编译过程,支持编译小程序安装文件时,自动解压APK并重新打包。
[0014]进一步的,所述生成各个工程所对应的小程序安装文件,以及支持小程序运行的主程序安装文件,包括:
[0015]根据小程序平台配置,从代码仓库拉取所需要打包成小程序的Flutter工程代码,并放置到主工程的指定目录;
[0016]在主工程根目录下运行Flutter SDK定制化命令编译,该命令会将小程序目录下的各个工程以package形式加入到主工程的pubsepc.yaml依赖中,然后执行主程序Flutter apk的构建过程,构建完成之后,主程序安装包即生成;
[0017]在主程序构建完成之后,将依次进入各小程序工程目录首先构建出小程序的apk文件,然后解压提取资源目录及libapp.so文件打包成小程序安装包。
[0018]进一步的,所述根据用户的操作下载对应的小程序安装文件,安装并运行,具体运行过程如下:
[0019]用户在小程序商店选择想要使用的小程序,点击之后将自动从后台下载对应的小程序安装文件,并对安装文件进行校验;
[0020]启动新的进程及容器,并在FlutterEngine启动时指定执行对应的安装文件;
[0021]切换到新的界面,待小程序界面渲染成功,用户即可操作。
[0022]进一步的,所述定制Flutter SDK包括自动构建小程序主工程及容器和自动构建小程序安装文件:
[0023]自动构建小程序主工程及容器:构建开始将自动扫描指定目录下的小程序Flutter工程,并自动在主工程pubspec.yaml中添加package依赖;然后分析主工程的所有package依赖,自动处理多个工程合并之后可能存在的版本冲突,并将安卓插件依赖添加至主工程,并将各小程序工程资源文件拷贝至主工程;切换到主工程根目录,开始构建主工程,生成主工程apk文件;
[0024]自动构建小程序安装文件:切换到小程序工程目录,开始构建小程序工程,生成apk文件后,解包获取aot文件libapp.so与资源文件,并重新签名打包生成miniapp小程序安装文件。
[0025]进一步的,所述DartEntryPoint判断方式,具体包括:
[0026]如果以小程序运行,当容器启动创建FlutterEngine时指定DartEntryPoint为特定的入口函数,通过入口函数不同,判断当前是以APP运行或小程序运行。
[0027]进一步的,所述window.defaultRouteName判断方式,具体包括:如果以小程序运行,当容器启动创建FlutterEngine时通过setInitialRoute设置指定的参数,启动之后则在Dart代码中通过window.defaultRouteName是否为“miniApp”判断是否在小程序中运行,是,则在小程序中运行。
[0028]本专利技术的有益效果如下:
[0029]通过修改Flutter SDK,本专利技术可自动根据多个Flutter工程构建出Flutter容器及小程序运行包,开发者仍可以Flutter APP工程结构开发应用,并且可以灵活配置以独立APP形式或小程序形式运行。
[0030]针对多个小程序同时运行场景,本专利技术提供了多进程+Flutter容器方案,可支持同时运行本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于安卓的Fluter容器及小程序的创建方法,其特征在于,包括以下步骤:修改Flutter SDK或定制Flutter SDK,生成各个工程所对应的小程序安装文件,以及支持小程序运行的主程序安装文件;运行时根据用户的操作下载对应的小程序安装文件,安装并运行;构建Flutter容器,包括:以Activity作为单个Flutter容器,在主工程中AndroidManifest清单文件中预先注册多个Activity,并指定不同的process;主工程中维护当前运行的小程序与容器的关系:当主工程收到启动某一小程序指令时,首先判断小程序是否已在运行的容器中,如果在则直接启动对应的容器,如果不在,则从未启动的容器中选择一个启动,当新的容器启动之后,发送广播到主程序,主程序更新当前运行的小程序与容器关系;在miniAppActivity启动之后,创建FlutterEngine,并根据需要启动小程序名,将对应的libapp.so的路径以FlutterShellArgs的方式传递给FlutterEngine,以执行Flutter加载对应的小程序代码执行;Flutter容器执行缓存策略:普通情况下,当小程序退出时,将在Activity finish时自动杀掉当前进程以释放资源,如果设置为常驻小程序,将保持容器在后台,下次启动时将改容器重新拉起,以实现快速启动;构建多进程的运行环境,使用DartEntryPoint和window.defaultRouteName,判断小程序或APP运行方式,并进行调度。2.根据权利要求1所述的基于安卓的Fluter容器及小程序的创建方法,其特征在于,所述修改Flutter SDK,包括新增小程序编译指令flutter build miniApp,小程序编译指令的编译过程如下:编译生成支持主程序APK以及小程序的安装文件;修改APK资源编译过程,针对小程序资源移除“package”路径;修改APK资源编译过程,支持编译小程序安装文件时,自动解压APK并重新打包。3.根据权利要求1所述的基于安卓的Fluter容器及小程序的创建方法,其特征在于,所述生成各个工程所对应的小程序安装文件,以及支持小程序运行的主程序安装文件,包括:根据小程序平台配置,从代码仓库拉取所需要打包成小程序的Flutter工程代码,并放置到主工程的指定目录;在主工程根目录下运行Flutter SDK定制化命令编译,该命令会将小程序目录下的各个工程以package形式加入到主工...

【专利技术属性】
技术研发人员:何卫江
申请(专利权)人:湖南兴盛优选网络科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1