Flutter升级版本后打aar集成到工程又一坑

背景

安卓IOS各端准备正式开发上线,需要统一flutter开发版本,验证后决定使用1.9.1_hotfix.6版本,对比1.5.1版本变动挺大的,另外由于工程是比较大,比较老的工程,项目指定支持armeabiCPU类型,为了适配引入aar到项目,之前就踩了一个坑,不另外适配cpu版本,默认生成的不包含armeabi模式flutter.so,也就是当你从原生跳转到flutter工程时候会报错,找不到flutter.so ;

找不到flutter.so修复方案

为了对其CPU,因为我们的原生项目指定了使用armeabi 类型CPU,我们需要运行一次flutter工程,生成release.apk,然后拿到对应的V7包下的so库。在flutter工程中创建armeabi文件夹,拷贝过来,然后更改配置,执行打包命令生成aar.

当前Flutter 版本1.9.1+ 结构

image.png

libs下已经不在是之前的flutterlib.so 库,替代的是flutter.jar和lib.jar
flutter.jar下面主要是一些引擎类,工具类,以及我们安卓下用到类的字节码都在里面
lib.jar 的大小也可以看到,特别小,8B,网上查了下,推测就是一些索引文件

再看上面 armeabi文件夹下,flutter.so是支持库,而lib.so其实就是我们的dart代码,别问我怎么知道的,花了一天时间才在愚人节这个特殊日子爬坑出来。

总结分析

为什么会掉坑里,因为之前的集成为了适配CPU,都会把flutter.so 拷贝到新的工程中,然而,新版本多了一个lib.so文件,这个其实就是Dart代码,个人理解 这个做法应该是也增加反编译难度,结合到之前遇到的升级后在原生找不到FlutterActivity的文章,可以去看下,大致就明白新的策略。
之前觉得我遇到的想象比较诡异,我明明在flutter 工程都把个人详情页面的Dart文件都删除了。clean了打成aar 后,集成到原生项目还是跳之前的页面,并不是我新的页面。这个诡异的问题,静下心来,排除了自己有没有低级错误,拍了几下脑袋,复盘下还是很快想到了,大改的问题产生路径。

修复方法

删除armeabi文件夹,正常打包,拿到flutter.so 和lib.so 重新创建armeabi文件夹,并丢进去,再次打包,就可以了。

你可能感兴趣的:(Flutter升级版本后打aar集成到工程又一坑)