發(fā)布package到Dart需要處于不被和諧的上網環(huán)境下, 而且需要google賬號 ,代表這個package的所有權 , 如果你還沒有注冊google賬號或者無法打破被和諧的環(huán)境,可以參考我的另一篇博客 : 搭建谷歌云
既然是要發(fā)布package , 就需要先創(chuàng)建一個package項目,前提是你已經配置好了Flutter開發(fā)環(huán)境 ,打開我們AndroidStudio , 依次點擊File / New / New Flutter Project , 這次要選擇Flutter Package
然后點擊Next填寫package的名稱和描述信息,最后點擊Finish即可
現(xiàn)在我們已經創(chuàng)建了一個package的項目了, 然后將你要打包發(fā)布的代碼放置在lib目錄下,lib下可創(chuàng)建多層級的子包 ,就跟我們開發(fā)Flutter項目一樣, 不過.dart文件的命名建議全部使用小寫格式( 例如: MyFirstApp.dart 建議改成 my_first_app.dart ), 因為發(fā)布的時候Dart SDK 會檢查我們的代碼,有大寫的 .dart命名文件會報出警告 , 不過也不影響發(fā)布 , 只是一對的滿江紅,看著不爽
創(chuàng)建完項目后,會自動生成一些文件, 這里我們需要重點關注下三個文件
CHANGELOG.md 是我們要發(fā)布的package的版本信息,和當前版本的介紹,這里以我已經發(fā)布的一個項目為例
pubspec.yaml定義了我們的個人信息,就是這個package的歸屬權 , 以及我們的個人信息
name : 發(fā)布到 pub.dartlang.org 的package名稱
description : package的介紹
version : 當前版本
author : 我們的名字和郵箱
homepage : 我們的個人網站(可以是GitHub或者CSDN...)
LICENSE 既然要開源這個項目,當然還需要一個開源許可
Dart推薦的是BSD的方式 , 如果你懶得去詳細了解如何生成BSD格式的許可信息,那么可以直接在GitHub新建一個項目 ,然后選擇一個BSD類型的許可就可以了
創(chuàng)建完上面的GitHub項目后,會生成一個LICENSE ,直接拷貝到我們的package中即可
README.md 一些項目的簡介,內容按需配置就行
目前為止,準備工作進行的差不多了,是時候發(fā)布我們的package了
我這里使用的是AndroidStudio下面的Terminal控制臺(其實就是系統(tǒng)的cmd.exe)
執(zhí)行命令 **flutter packages pub publish --dry-run **
此時Dart會檢查我們項目的目錄結構以及語法等, 接下來會列出類似于下面的這些信息
D:\WorkerSpace\flutter_chart>flutter packages pub publish --dry-run
Publishing flutter_chart 0.0.1 to https://pub.flutter-io.cn:
|-- .flowconfig
|-- .gitignore
|-- .idea
| |-- encodings.xml
| |-- flutter_chart.iml
| |-- libraries
| | |-- Dart_Packages.xml
| | |-- Dart_SDK.xml
| | '-- Flutter_Plugins.xml
| |-- misc.xml
| |-- modules.xml
| |-- vcs.xml
| '-- workspace.xml
|-- .metadata
|-- CHANGELOG.md
|-- LICENSE
|-- README.md
|-- android
| |-- app
| | '-- src
| | '-- main
| | '-- java
| | '-- io
| | '-- flutter
| | '-- plugins
| | '-- GeneratedPluginRegistrant.java
| '-- local.properties
|-- flutter_chart.iml
|-- lib
| |-- chart
| | |-- chart_bean.dart
| | |-- painter
| | | |-- base_painter.dart
| | | |-- chart_bar_painter.dart
| | | '-- chart_line_painter.dart
| | '-- view
| | |-- chart_bar.dart
| | '-- chart_line.dart
| '-- flutter_chart.dart
|-- pubspec.yaml
'-- test
'-- flutter_chart_test.dart
Package has 0 warnings.
因為我這文件的命名已經按照dart建議的方式的修改過了,所以沒有命名格式的警告
接下來就可以發(fā)布了
flutter packages pub publish --server=https://pub.dartlang.org
到這一步,如果沒錯誤的話,會提示你要不要繼續(xù)(y/n) , 輸入y后不出意外會在控制臺打印出一串鏈接, 是要我們自己拷貝到瀏覽器 中,去驗證我們的google賬號,說白了就是鑒權, 將要發(fā)布的這個package關聯(lián)到我們的google賬戶下面
看到下面這個界面 代表認證成功了
** 此時控制臺會接收到認證信息, 開始發(fā)布你的package,出現(xiàn)下面的信息,說明發(fā)布成功了**
此時你的google郵箱也會收到package發(fā)布成功的郵件
現(xiàn)在試試在pub.dartlang.org搜索剛剛發(fā)布成功的package
當然了,這只是理想的情況下,如果你出現(xiàn)了以下情況,基本上可以確定被和諧了
此時你可以在Terminal 輸入 curl google.com 測試google是否可以連通矢空,以下是成功返回信息的樣本
失敗或者超時
如果你的終端超時了,此時就需要配置代理 (前面配置好的ShadowScoks代理ip和端口)
然后重新測試 curl google.com 如果返回信息代表是google是可以連通的喉誊,最后重新執(zhí)行命令 flutter packages pub publish --server=https://pub.dartlang.org即可 , 如果你前面認證成功了,后面是不需要再次認證的,會直接提示發(fā)布成功
Good Luck !