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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flutter Android端集成排坑 - armeabi 适配 & FlutterBoost相关的知识,希望对你有一定的参考价值。

参考技术A 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,导致报错。

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

Android 多平台AR SDK 集成使用

Android 多平台AR SDK 使用

1、Vuforia AR SDK

手机 端 Vuforia SDK

1、sdk地址下载

https://developer.vuforia.com/downloads/sdk
下载并且解压到本地

2、下载samples

samples/readme.txt 中有下载地址
https://developer.vuforia.com/downloads/samples

3、项目运行

需要注意的几处地方:
1、引擎的jar地址,注意层级

2、libVuforiaEngine.so的地址

4、License申请

https://developer.vuforia.com/vui/develop/licenses

Android Studio 工程中 配置

5、ImageTarget


https://library.vuforia.com/sites/default/files/vuforia-library/docs/target-pdfs/image_targets_2022.pdf

6、modelTarget 识别图片

https://library.vuforia.com/web-api/model-target-web-api

7、参考文档

https://pewdxm7xlh.feishu.cn/docx/Glm2d5lqhodU0gxuVQmcjuHjn0Y#TQ6OdIgkCogWiCxgVM4cp3CTnJg

https://www.jianshu.com/p/d21af1bc387c?tdsourcetag=s_pcqq_aiomsg

Unity 版本 Vuforia 版本SDK

Android 版本SDK 提供demo 不能够满足我们项目的使用场景,而且官方文档主要以Unity为主,
Native提供的接口不够详细。

1、新建unity项目

2、下载Vuforia SDK

window->Asset Store 打开资源商店

添加资源到Unity中

3、导入到项目中

4、添加组件和模型

Hierarchy->右键 —> vuforia–>ArCamera 添加ARCamera


Hierarchy->右键 —> vuforia–>Ground Plane --》Ground Plane stage

Hierarchy->右键 —> vuforia–>Ground Plane–》Ground Finder


添加模型文件到Ground Plane stage目录下

添加 licence key

5、运行的结果

7、参考文档

https://blog.csdn.net/m0_63165147/article/details/122862798?spm=1001.2014.3001.5501

https://blog.csdn.net/m0_63165147/article/details/123004914

https://library.vuforia.com/ground-plane/introduction-ground-plane-unity

2、Google ARCore SDK

Android SDK

Android 端使用 帮我们封装好的 sceneform SDK

1、sceneform SDK官网

https://developers.google.cn/sceneform/develop/getting-started

2、案例下载

https://github.com/google-ar/sceneform-android-sdk

3、手机 Google play 服务apk

4、加载自己的模型文件

将自己的模型文件放在

build.gradle文件中配置编译脚本

最终在res->raw目录下生成对应的.sfb文件,在Android 程序中加载的是 .sfb文件

5、效果

Unity SDK

1、导入ARFoundation 插件

2、导入ARCore插件

ARFoundation 依赖ArCore

3、创建AR Session

Hierarchy ->右键->XR --》AR Session

4、创建 AR Session Origin

5、创建预制体

1、创建一个 ARDefalut Plane 的预制体

2、创建模型预制体

6、预制体设置到AR session Origin 上

7、打包配置

1、修改apk的最低版本,要求7.0


2、删除 Vulkan,目前不支持
projectSeting->OhterSetting->

3、添加ArCore 提供商否则会黑屏

8、效果展示

3、Easy Ar SDK

1、SDK下载

https://www.easyar.cn/view/download.html

下载到本地,并解压

3、导入Sample 案例

导入 motionTracking 案例

4、申请license

https://portal.easyar.cn/sdk/list/1


注意申请的时候包名要和Unity中的包名保持一致

5、unity 替换license key


6、导入模型

7、效果展示

以上是关于Flutter Android端集成排坑 - armeabi 适配 & FlutterBoost的主要内容,如果未能解决你的问题,请参考以下文章

使用 Agora SDK 的 Flutter Android 项目:'错误:找不到符号'

Android项目集成Flutter

原生Android集成Flutter混合开发

Python3+ Django2.7开发web排坑记004_restfulframework 实现前后端分离

最强Android 项目集成 Flutter 实战分享!不看看?

最强Android 项目集成 Flutter 实战分享!不看看?