我們自己做了插件包,當然也想發布到pub.dartlang.org上去。怎么發布呢?先看看官方的說明(https://flutter.io/developing-packages/)。
Publishing packages
Once you have implemented a package, you can publish it on Pub, so that other developers can easily use it.
Prior to publishing, make sure to review the
pubspec.yaml
,README.md
, andCHANGELOG.md
files to make sure their content is complete and correct.Next, run the dry-run command to see if everything passes analysis:
$ flutter packages pub publish --dry-run
Finally, run the actual publish command:
$ flutter packages pub publish
For details on publishing, see the Pub publishing docs.
意思就是說,做好插件后,在終端中先執行 $ flutter packages pub publish --dry-run
來檢查看是否沒有問題了,再執行下一句 $ flutter packages pub publish 來上傳。
在這兩步中,如果沒有問題會在終端中會顯示 ”Package has 0 warnings.“。
在這一步如果出錯,可以檢查一下 pubspec.yaml 中最后的 environment 字段是否設置。一般會是這樣:
environment:
sdk: ">=2.0.0-dev.28.0 <3.0.0"
flutter: ">=0.1.4 <2.0.0"
如果配置了還是不行,按照提示修改。
好了,在一切都沒有問題時,我們開始上傳。輸入命令 $ flutter packages pub publish 回車,會先檢測項目結構是否合法,然后會出現這樣的界面:
輸入 "y" 回車。
第一次上傳,會要求登錄谷歌賬號。這個時候終端會出現一個url地址,類似這樣:
https://accounts.google.com/o/oauth2/auth?access_type=offline&approval_prompt=force&response_type=code&client_id=818368855108-8grd2eg9tj9f38os6f1urbcvsq399u8n.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A62338&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email
將地址復制出來,在瀏覽器URL中輸入打開這個地址,允許登錄谷歌賬號就可以了。
但是在這里,由於國內限制了谷歌的訪問,所以一般會打不開,怎么辦呢?這個時候我們只能借助SVN工具了。我使用的是”無界“。
打開無界,設置成如下:
配置 Internet 屬性中的局域網設置
在代理設置界面中,輸入無界的代理地址和端口。如上圖所示。
這個時候再刷新頁面,應該可以打開我們要登錄谷歌的網址了。
登錄谷歌賬號后出來如果所示的界在,這時候點擊相關賬號確認就行了。
確認登錄后,瀏覽器會回調給 Android Studio ,這時候 Android Studio 會開始連接谷歌並上傳我們的插件包。
但是這里也要注意,可能也會因為谷歌被屏蔽而失敗。(出現下圖所示的提示時,一般就是這個問題了)
這個時候我們需要設置終端的HTTP代理(在Android Studio中系統設置的配置的並沒有效果)。在終端中執行如下命令配置代理:
set http_proxy=http://127.0.0.1:9666 set https_proxy=https://127.0.0.1:9666
配置好后重新執行發布命令,重新執行上面認證登錄的流程即可。(下圖為上傳成功的提示)
flutter packages pub publish --server=https://pub.dartlang.org