Flutter Plugin引入framework

最近入職了一家新公司,有個(gè)客戶有個(gè)需求巡莹,希望我們將原生的SDK做成Flutter插件司志,那我很榮幸的被分配到這個(gè)項(xiàng)目當(dāng)中,作為Flutter萌新降宅,感覺(jué)百度骂远、谷歌都被我翻爛了,記錄一下遇到的問(wèn)題和解決辦法腰根,好記性不如爛筆頭<げ拧!额嘿!

一開(kāi)始瘸恼,導(dǎo)入iOS端的SDK的時(shí)候位置導(dǎo)入錯(cuò)了,我以為和原生開(kāi)發(fā)一樣册养,就直接在example下面的iOS工程里面按原生的步驟導(dǎo)入使用东帅,后來(lái)我們的Flutter開(kāi)發(fā)同事(做安卓的,有接觸過(guò)Flutter球拦,就給他負(fù)責(zé)了)靠闭,告訴example在打包的時(shí)候會(huì)不見(jiàn)的帐我,我一開(kāi)始怎么都想不通,但是本著菜雞的敬畏之心愧膀,你說(shuō)啥就是啥拦键,我就開(kāi)始在外部的Flutter工程的iOS文件夾內(nèi)開(kāi)始導(dǎo)入SDK,嗚呼扇调,出問(wèn)題了矿咕,我按照網(wǎng)絡(luò)上的教程抢肛,在iOS文件夾內(nèi)新建一個(gè)framework文件夾狼钮,然后command+c,command+v將framework放進(jìn)去,再在iOS文件夾下的xxxx.podspec中加入:

s.vendored_frameworks = 'Framework/CRPSmartBand.framework', 'Framework/OTAFramework.framework', 'Framework/RTKLEFoundation.framework', 'Framework/RTKOTASDK.framework'

就會(huì)報(bào)錯(cuò)說(shuō)no such XXXX.framework捡絮,然后查了很多文檔和博客熬芜,改了好久都不行,最后還是靠自己蒙出來(lái)了一個(gè)解決辦法:

1.在Flutter plugin項(xiàng)目的外層iOS目錄下福稳,與classes同級(jí)涎拉,新增一個(gè)framework的文件夾,將CRPSmartBand.framework 復(fù)制的圆、粘貼到該文件夾下

image.png

2.在iOS目錄下找到跟classesframework同級(jí)的 xxxplugin.podspec文件鼓拧,雙擊打開(kāi),加上一句: s.vendored_frameworks = 'Framework/CRPSmartBand.framework'
image.png

3..在項(xiàng)目目錄最下方越妈,找到 pubspec.yaml季俩,雙擊進(jìn)入文件內(nèi),在右上角有個(gè)Pub get梅掠,點(diǎn)擊一下
image.png

4.點(diǎn)擊正下方的Terminal,cd到 example下的iOS目錄酌住,然后pod install ,pod update,完事后運(yùn)行阎抒,會(huì)報(bào)錯(cuò):

Swift Compiler Error (Xcode): Module 'OTAFramework' not found /Users/moyangkeji/Desktop/Moyoung/FlutterSDK/moyoung_ble_plugin/example/ios/.symlinks/plugins/moyoung_ble_plugin/ios/Framework/CRPSmartBand.framework/Headers/CRPSmartBand-Swift.h:187:8

因?yàn)檫€有三個(gè)庫(kù)沒(méi)導(dǎo)進(jìn)去酪我,一樣的方式,將剩下的三個(gè)庫(kù)都導(dǎo)入,同樣且叁,是要Pub get,pod install,別忘了:

s.vendored_frameworks = 'Framework/CRPSmartBand.framework', 'Framework/OTAFramework.framework', 'Framework/RTKLEFoundation.framework', 'Framework/RTKOTASDK.framework'
記得寫代碼和創(chuàng)建文件要在這里都哭,而不是在example的iOS里面哦

image.png

步驟都完成后,就可以在Plugin.swift里面引用framework逞带,寫代碼了欺矫,新建一個(gè)類也可以的,這個(gè)文件只是flutter告訴我們寫法
image.png

萬(wàn)萬(wàn)沒(méi)想到掰担,寫代碼的時(shí)候沒(méi)有報(bào)錯(cuò)汇陆,但是在編譯運(yùn)行的時(shí)候報(bào)錯(cuò)了,請(qǐng)?jiān)徫疫@個(gè)萌新带饱,總是會(huì)遇到問(wèn)題毡代。

Undefined symbol: type metadata accessor for CRPSmartBand.CRPSmartBandSDK

Undefined symbol: static CRPSmartBand.CRPSmartBandSDK.sharedInstance.getter : CRPSmartBand.CRPSmartBandSDK

Undefined symbol: dispatch thunk of CRPSmartBand.CRPSmartBandSDK.getMac((Swift.String, CRPSmartBand.CRPError) -> ()) -> ()

就離譜阅羹,離了大譜,我本來(lái)開(kāi)開(kāi)心心的在寫代碼了教寂,就想運(yùn)行試試API,你又告訴我你鏈接不到framework捏鱼?好吧,繼續(xù)谷歌百度酪耕,最后的最后导梆,在這篇文章找到了解決辦法
參考文章
在 xxxx.podspec 文件再加一句:

s.static_framework = true

這篇文章告訴我們,因?yàn)镕lutter有在podfile自動(dòng)開(kāi)啟了use_framework!
而開(kāi)啟了這個(gè)之后呢迂烁,pod集成的所有的庫(kù)都會(huì)以 dynamic library framework 的方式引入到工程中看尼,但是我們有一些引入的庫(kù)本來(lái)就是以靜態(tài)庫(kù)的方式存在的,就會(huì)報(bào)錯(cuò)盟步。
所以藏斩,我們需要修改對(duì)應(yīng)的 podspec文件
記得最后一定要pub getpod install

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市却盘,隨后出現(xiàn)的幾起案子狰域,更是在濱河造成了極大的恐慌,老刑警劉巖黄橘,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兆览,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡塞关,警方通過(guò)查閱死者的電腦和手機(jī)抬探,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)描孟,“玉大人驶睦,你說(shuō)我怎么就攤上這事∧湫眩” “怎么了场航?”我有些...
    開(kāi)封第一講書人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)廉羔。 經(jīng)常有香客問(wèn)我溉痢,道長(zhǎng),這世上最難降的妖魔是什么憋他? 我笑而不...
    開(kāi)封第一講書人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任孩饼,我火速辦了婚禮,結(jié)果婚禮上竹挡,老公的妹妹穿的比我還像新娘镀娶。我一直安慰自己,他們只是感情好揪罕,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布梯码。 她就那樣靜靜地躺著宝泵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪轩娶。 梳的紋絲不亂的頭發(fā)上儿奶,一...
    開(kāi)封第一講書人閱讀 52,549評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音鳄抒,去河邊找鬼闯捎。 笑死,一個(gè)胖子當(dāng)著我的面吹牛许溅,可吹牛的內(nèi)容都是我干的瓤鼻。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼闹司,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼娱仔!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起游桩,我...
    開(kāi)封第一講書人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎耐朴,沒(méi)想到半個(gè)月后借卧,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡筛峭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年铐刘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片影晓。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡镰吵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出挂签,到底是詐尸還是另有隱情疤祭,我是刑警寧澤,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布饵婆,位于F島的核電站勺馆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏侨核。R本人自食惡果不足惜草穆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望搓译。 院中可真熱鬧悲柱,春花似錦、人聲如沸些己。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至直颅,卻和暖如春博个,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背功偿。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工盆佣, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人械荷。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓共耍,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親吨瞎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子痹兜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容