前面扒吁,我們對ios項目基本已經(jīng)有了大概的認(rèn)識灌灾,現(xiàn)在來開發(fā)一個flutter插件遇骑,來調(diào)用android和ios的原生api恒削。
flutter插件與原生通訊主要是通過channel棉浸,底層是通過二進(jìn)制在傳輸數(shù)據(jù)怀薛。
類似的跨平臺Hbrid和RN等js語言的與原生通訊的JSBridge。
我們現(xiàn)在創(chuàng)建一個插件迷郑,已獲取手機電量為例子枝恋。
我們來看一下插件工程的項目結(jié)構(gòu)
接著先看下android端的實現(xiàn)
ios端需要先加載pod
在這個過程中發(fā)現(xiàn)了一個問題,就是swift調(diào)用oc的方法時嗡害,方法名會部分被省略掉焚碌。
最后慢慢了解到,oc的方法名其實很多都是后半部分都是帶有第一個參數(shù)名形式的霸妹,
就像這個注冊插件的方法registerWithRegistrar with后面往往接的是第一個參數(shù)十电,swift可能
是為了增加方法可讀性,應(yīng)該是有根據(jù)某種規(guī)律來檢測判斷是否省略叹螟。
上面flutter插件的兩端就實現(xiàn)了鹃骂,我們來run一下看看結(jié)果
好的那么插件寫好了,當(dāng)然是可以傳到GitHub共享出來罢绽。但是就像android可以發(fā)布aar一樣畏线,flutter的
插件都可以發(fā)布在 pub上面。
我們先執(zhí)行下命令良价,檢測是否符合發(fā)布規(guī)則寝殴,
flutter packages pub publish --dry-run
提示沒有填寫homepage或repositor(簡單理解為就是git源碼),并且體積過大明垢。
上傳到github蚣常,然后clean下項目,刪掉build項目袖外。 繼續(xù)執(zhí)行檢測命令
這個我么把yaml里面作者這一欄刪掉即可
執(zhí)行最終發(fā)布命令
flutter packages pub publish
或
sudo flutter packages pub publish -v
flutter packages pub publish --server=https://pub.dartlang.org
失敗了 訪問不到ping accounts.google
其實我是FQ了的史隆,網(wǎng)頁是可以打開,于是我ping了下
可以看到 命令行是訪問不到google的曼验。需要設(shè)置命令行代理泌射。
@harrychen ? flutter_plugin_battery git:(master) ? export http_proxy=http://127.0.0.1:9999
@harrychen ? flutter_plugin_battery git:(master) ? export https_proxy=http://127.0.0.1:9999
@harrychen ? flutter_plugin_battery git:(master) ? set https_proxy=https://127.0.0.1:9999
@harrychen ? flutter_plugin_battery git:(master) ? set http_proxy=http://127.0.0.1:9999
特別注意,每個代理的端口不一樣鬓照,不要直接復(fù)制熔酷,一定要看清自己的代理端口,這個9999
是我自己代理端口2蝰伞>苊亍:畔浴!
還需要注釋國內(nèi)鏡像躺酒。上傳完了自己再放開
終于成功了押蚤,可以看到pub上已經(jīng)可以搜到了