flutter外掛編寫及釋出流程

HarryChen²⁰¹⁹發表於2021-03-29

前面,我們對ios專案基本已經有了大概的認識,現在來開發一個flutter外掛,來呼叫android和ios的原生api。 flutter外掛與原生通訊主要是通過channel,底層是通過二進位制在傳輸資料。 類似的跨平臺Hbrid和RN等js語言的與原生通訊的JSBridge。

我們現在建立一個外掛,已獲取手機電量為例子。

create.png

create2.png

我們來看一下外掛工程的專案結構

struct.png

接著先看下android端的實現

android.png

ios端需要先載入pod

ios1.png ios2.png

ios3.png

ios4.png

在這個過程中發現了一個問題,就是swift呼叫oc的方法時,方法名會部分被省略掉。

ios5.png 最後慢慢了解到,oc的方法名其實很多都是後半部分都是帶有第一個引數名形式的, 0.png 就像這個註冊外掛的方法registerWithRegistrar with後面往往接的是第一個引數,swift可能 是為了增加方法可讀性,應該是有根據某種規律來檢測判斷是否省略。

####上面flutter外掛的兩端就實現了,我們來run一下看看結果 result.png

好的那麼外掛寫好了,當然是可以傳到GitHub共享出來。但是就像android可以釋出aar一樣,flutter的 外掛都可以釋出在 pub上面。

我們先執行下命令,檢測是否符合釋出規則, flutter packages pub publish --dry-run

提示沒有填寫homepage或repositor(簡單理解為就是git原始碼),並且體積過大。 上傳到github,然後clean下專案,刪掉build專案。 繼續執行檢測命令 author.png 這個我麼把yaml裡面作者這一欄刪掉即可 執行最終釋出命令 flutter packages pub publishsudo flutter packages pub publish -v
flutter packages pub publish --server=https://pub.dartlang.org

fail.png 失敗了 訪問不到ping accounts.google 其實我是可以訪問外網,網頁是可以開啟,於是我ping了下 ping.png 可以看到 命令列是訪問不到google的。需要設定命令列代理。

@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

特別注意,每個代理的埠不一樣,不要直接複製,一定要看清自己的代理埠,這個9999 是我自己代理埠!!!! bashprofile.png 還需要註釋國內映象。上傳完了自己再放開

success.png

終於成功了,可以看到pub上已經可以搜到了 pub.png show.png

相關文章