Flutter Module 顾名思义,就是 Flutter 模块,一般用于在原生代码中嵌入 Flutter 使用。
Flutter Package 准确的说,应该叫 Dart Package,而 Flutter Plugin 应该叫 Plugin Package,前者是纯 dart 代码实现包,后者是基于原生平台实现的包。
在接入SDK时,我们当然可以直接在 Flutter 工程下的 android\ios 子工程里直接修改,如 android 端,可以直接将 .aar\.jar 文件放到 android\app\libs 目录下,将 .so 文件按 arm64-v8a\x86 分类放到 android\app\src\main\jniLibs 目录下,修改android\src\main\AndroidManifest.xml 注册相应权限和服务,修改 android\build.gradle 注册 libs 相关的路径和包名称,如:
rootProject.allprojects {
repositories {
google()
mavenCentral()
flatDir { dirs project(":flutter_qq_asr").file("libs") }
}
}
dependencies {
implementation(name: "asr-one-sentence-release", ext: "aar")
}
但如果有多个SDK需要接入,代码就会非常乱了,也难以维护,所以最终还是建议每个SDK都新建一个 Flutter Plugin 项目,最后引入到 Flutter 工程中,这样各个SDK开发维护起来都会非常方便,也便于多个项目使用。
引入本地 Flutter Plugin 的方法很简单,只要在 pubspec.yaml 里配置好即可:
dependencies:
my_flutter_plugin:
path: ../my_flutter_plugin
1、先进入 example/ios 目录下,flutter build ios,然后再用 xcode 打开 example/ios/Runner.xcworkspace,这时候左边的工程目录里就有 Pods 了,
在Pods下面就可以找到插件代码进行编写。
2、将 QCloudOneSentence.xcframework 文件复制到 flutter_tencent_asr/ios 目录下。
3、在 xcode 里打开 Pods -> Development Pods -> flutter_tencent_asr -> Pod -> flutter_tencent_asr.podspec 文件(其实就是flutter插件项目的ios文件夹下的 flutter_tencent_asr.podspec 文件),在最后的 end 前加三句代码:
# 在下面配置插件的 xcframework 信息
s.preserve_paths = 'QCloudOneSentence.xcframework'
s.xcconfig = { 'OTHER_LDFLAGS' => '-framework QCloudOneSentence' }
.vendored_frameworks = 'QCloudOneSentence.xcframework'
# 需要需要链接 libc++.tbd,可以在项目中的 Link Binary With Libraries 中添加
# 更好的方式是在下面添加,添加时去掉名字中的lib和.tbd等后缀
s.libraries = ["c++"]
然后进入 example/ios 目录,运行 pod update,这一步很重要,只要修改了 podspec 文件,一定要记得 pod update! 运行完之后,原生插件里就可以正常识别 QCloudOneSentence.xcframework 了。