科大訊飛https://doc.iflyos.cn/aiui/sdk/mobile_doc/quick_start.html#demo
參考文檔
https://blog.csdn.net/lv_ruanruan/article/details/80798327
https://www.liuandy.cn/pod/2018/03/14/2330.html#.YAFRyS-1HX-
http://www.itdecent.cn/p/6e9293fd0745
需要具備知識
flutter : 工程創(chuàng)建 , 插件與原生正逆向通道建立
iOS : swift或者oc基礎 , 私有庫配置
集成過程遇到的問題
集成過程按照官方文檔可以很輕松的崽iOS原生實現(xiàn)出來 , 但是如果想過度到flutter上就需要一些注意 , 我在下方記錄下我自己遇到的問題 .
1.第三方和系統(tǒng)自帶的framework分別怎么添加到私有庫中
a . 首先在我標識的路徑下創(chuàng)建出一個frameworks文件夾(名字可以自己定義 , 只要之后路徑能保持一致就好) . 然后將iflyAIUI.framework放入frameworks文件夾 .

b.然后打開dt_aiui_plugin.podspec , 在里面添加
s.vendored_frameworks = "**/iflyAIUI.framework"
c.然后繼續(xù)添加系統(tǒng)自帶的 framework :
s.frameworks = "CoreLocation","CoreTelephony","AVFoundation","AddressBook","AudioToolbox","Contacts","SystemConfiguration","QuartzCore","UIKit","Foundation","CoreGraphics"
2.系統(tǒng)自帶的lib怎么添加到私有庫中
就以我們應該添加的三個lib舉例
s.libraries = "c++", "icucore", "z"
3.怎么添加資源文件 , 并加載出來
分別講述aiui.cfg和meta_vad_16k.jet , 兩個問價加載方式不一樣 , meta_vad_16k.jet的路徑我們控制不了 , 所以比較坑
3.1 aiui.cfg
a.創(chuàng)建resource文件夾 , 放在與framework同級處
b.將aiui.cfg文件放入resource中
c.在dt_aiui_plugin.podspec中添加路徑
s.resources = "resource/*"
d.在代碼處修改bundle的加載方法
NSString *cfgFilePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"aiui" ofType:@"cfg"];
3.2 meta_vad_16k.jet
a.直接將meta_vad_16k.jet拖入到主工程中 , 目前找不到科大訊飛在哪里加載meta_vad_16k.jet的 , 只能找到路徑 , 我猜測是在封裝方法的內(nèi)部調(diào)用bundle的加載 , 這個導致一個問題 , 如果我像aiui.cfg一樣去存放文件 , 會加載不到資源 , 所以只能每次引用這個插件都在主工程中放入一次 .
最后我的podspec文件如下:
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html.
# Run `pod lib lint dt_aiui_plugin.podspec' to validate before publishing.
#
Pod::Spec.new do |s|
s.name = 'dt_aiui_plugin'
s.version = '0.0.1'
s.summary = 'A new flutter plugin project.'
s.description = <<-DESC
A new flutter plugin project.
DESC
s.homepage = 'http://example.com'
s.license = { :file => '../LICENSE' }
s.author = { 'Your Company' => 'email@example.com' }
s.source = { :path => '.' }
# s.vendored_frameworks = "frameworks/iflyAIUI.framework"
s.vendored_frameworks = "**/iflyAIUI.framework"
s.frameworks = "CoreLocation","CoreTelephony","AVFoundation","AddressBook","AudioToolbox","Contacts","SystemConfiguration","QuartzCore","UIKit","Foundation","CoreGraphics"
s.source_files = 'Classes/**/*'
s.dependency 'Flutter'
s.library = "z"
s.libraries = "c++", "icucore", "z"
s.resources = "resource/*"
s.platform = :ios, '9.0'
# Flutter.framework does not contain a i386 slice.
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' }
end```