flutter 發(fā)布插件到私服

1. 創(chuàng)建要發(fā)布的插件

創(chuàng)建項目一般有2中方法

1) 用命令創(chuàng)建

flutter create -t plugin helloworld

你也可以通過 flutter create -h 命令來查看flutter支持的所有命令:

-h, --help                     Print this usage information.
    --[no-]pub                 Whether to run "flutter pub get" after the project has been created.
                               (defaults to on)

    --[no-]offline             When "flutter pub get" is run by the create command, this indicates
                               whether to run it in offline mode or not. In offline mode, it will need
                               to have all dependencies already available in the pub cache to succeed.

    --[no-]with-driver-test    Also add a flutter_driver dependency and generate a sample 'flutter
                               drive' test.

-t, --template=<type>          Specify the type of project to create.

          [app]                (default) Generate a Flutter application.
          [module]             Generate a project to add a Flutter module to an existing Android or iOS
                               application.
          [package]            Generate a shareable Flutter project containing modular Dart code.
          [plugin]             Generate a shareable Flutter project containing an API in Dart code with
                               a platform-specific implementation for Android, for iOS code, or for
                               both.

-s, --sample=<id>              Specifies the Flutter code sample to use as the main.dart for an
                               application. Implies --template=app. The value should be the sample ID
                               of the desired sample from the API documentation website
                               (http://docs.flutter.dev). An example can be found at
                               https://master-api.flutter.dev/flutter/widgets/SingleChildScrollView-cla
                               ss.html

    --list-samples=<path>      Specifies a JSON output file for a listing of Flutter code samples that
                               can created with --sample.

    --[no-]overwrite           When performing operations, overwrite existing files.
    --description              The description to use for your new Flutter project. This string ends up
                               in the pubspec.yaml file.
                               (defaults to "A new Flutter project.")

    --org                      The organization responsible for your new Flutter project, in reverse
                               domain name notation. This string is used in Java package names and as
                               prefix in the iOS bundle identifier.
                               (defaults to "com.example")

    --project-name             The project name for this new Flutter project. This must be a valid dart
                               package name.

-i, --ios-language             [objc, swift (default)]
-a, --android-language         [java, kotlin (default)]
    --[no-]androidx            Generate a project using the AndroidX support libraries
                               (defaults to on)

2) 直接用android studio創(chuàng)建(推薦)

File->New->New Flutter Project...
然后選擇 plugin 就好

<img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gic4wx8jopj30lv02jgo6.jpg" alt="image-20200902111524956" />

<img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1gic4x7iro1j30p00io3zw.jpg" alt="image-20200902111541613" style="zoom:50%;" />

3) 發(fā)布配置

修改項目的 pubspec.yaml 文件, 添加如下配置:

name: helloword # 要發(fā)布的項目名稱
description: A Test Flutter plugin. # 項目描述
version: 1.0.0 # 發(fā)布的版本
authors: [zhangsan <zhangsan@qq.com>] # 項目作者
homepage: http://localhost:8080 # 項目地址 
publish_to: http://localhost:8080 # 發(fā)布的私有服務(wù)器地址 如果要發(fā)布到公共pub庫,則該行可以省略

配置好了之后通過命令檢查一下:

flutter packages pub publish --dry-run

如用以上命令有warning就按要求修改下,如沒錯誤就開始發(fā)布了, 發(fā)布命令:

flutter packages pub publish
|-- lib
|   '-- helloworld.dart
|-- pubspec.yaml
'-- test
    '-- helloworld_test.dart

Looks great! Are you ready to upload your package (y/n)? y
Uploading...
Successfully uploaded package.

如出現(xiàn)以上情況就表示發(fā)布成功了

然而,多數(shù)情況下我們會出現(xiàn)下述情況:

image-20200902161125798

對堤器,沒錯屋剑。需要進(jìn)行g(shù)oogle驗證呛谜,即便發(fā)布到私有倉庫也要通過這一步风罩。而國內(nèi)進(jìn)行g(shù)oogle驗證要fq,比較麻煩傍衡。

如果發(fā)布到共有pub庫就乖乖進(jìn)行驗證吧,驗證后接著發(fā)布负蠕,坐等成功蛙埂。

那發(fā)布到私有倉庫如何設(shè)置跳過google驗證?別著急遮糖,我們往下看

2. 搭建pub私服

下載私服源碼

私服源碼下載地址

這個源碼也是個dart項目绣的,我們可以解壓后直接用Android Studio打開

打開Terminal窗口,輸入pub get拉取依賴欲账,成功后會顯示Got dependencies!

然后執(zhí)行命令:dart example/example.dart -d /tmp/package-db 來啟動服務(wù)

image-20200902145529779

出現(xiàn)上述圖案表示服務(wù)已經(jīng)成功啟動

3. 跳過google驗證

  1. 下載項目:https://github.com/ameryzhu/pub

  2. 我們?nèi)匀挥肁ndroid Studio打開屡江,打開Terminal窗口,更新依賴:pub get

    然后執(zhí)行

    dart --snapshot=mypub.dart.snapshot bin/pub.dart 
    

    完成之后會在項目根目錄下多出來一個 mypub.dart.snapshot 文件

    復(fù)制之后放入${flutterSDK Path}/bin/cache/dart-sdk/bin/snapshots/ 目錄下

    用txt編輯器打開${flutterSDK Path}/bin/cache/dart-sdk/bin/pub文件

    將倒數(shù)第三行的:pub.dart.snapshot 替換為 mypub.dart.snapshot

    function follow_links() {
      file="$1"
      while [ -h "$file" ]; do
        # On Mac OS, readlink -f doesn't work.
        file="$(readlink "$file")"
      done
      echo "$file"
    }
    
    function array_contains() {
      local needle="$1"
      local element
      shift
      for element; do [ "$element" = "$needle" ] && return 0; done
      return 1
    }
    
    # Unlike $0, $BASH_SOURCE points to the absolute path of this file.
    PROG_NAME="$(follow_links "$BASH_SOURCE")"
    
    # Handle the case where dart-sdk/bin has been symlinked to.
    BIN_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)"
    
    
    unset VM_OPTIONS
    declare -a VM_OPTIONS
    
    # Allow extra VM options to be passed in through an environment variable.
    if [[ $DART_VM_OPTIONS ]]; then
      read -a OPTIONS <<< "$DART_VM_OPTIONS"
      VM_OPTIONS+=("${OPTIONS[@]}")
    fi
    
    # Run the pub snapshot.
    DART="$BIN_DIR/dart"
    if array_contains "--no-preview-dart-2" "${VM_OPTIONS[@]}"; then
      echo "Pub no longer supports Dart 1"
      exit -1
    else
      SNAPSHOT="$BIN_DIR/snapshots/mypub.dart.snapshot"
      exec "$DART" "${VM_OPTIONS[@]}" "$SNAPSHOT" "$@"
    fi
    

保存&退出

再切換到plugin工程進(jìn)行發(fā)布赛不,ok盼理!發(fā)布成功、已經(jīng)不需要google驗證了

4. 依賴我們發(fā)布的插件

在我們需要依賴的項目的yaml文件中 dependencies:下添加:

helloword:
  hosted:
    name: helloword
    url: http://localhost:8080
  version: ^1.0.0

注意:yaml中層級一定要用空格對齊(helloword一級俄删,hosted和version二級宏怔,name和url3級)奏路,否則會報錯;然后執(zhí)行pub get即可

如果我們僅僅只需要在本地依賴臊诊,可以直接用路徑依賴鸽粉,免去發(fā)布的這一步:

helloword:
    path: ...../Workspace/plugin/hellowork
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市抓艳,隨后出現(xiàn)的幾起案子触机,更是在濱河造成了極大的恐慌,老刑警劉巖玷或,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件儡首,死亡現(xiàn)場離奇詭異,居然都是意外死亡偏友,警方通過查閱死者的電腦和手機(jī)蔬胯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來位他,“玉大人氛濒,你說我怎么就攤上這事《焖瑁” “怎么了舞竿?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長窿冯。 經(jīng)常有香客問我骗奖,道長,這世上最難降的妖魔是什么醒串? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任重归,我火速辦了婚禮,結(jié)果婚禮上厦凤,老公的妹妹穿的比我還像新娘鼻吮。我一直安慰自己,他們只是感情好较鼓,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布椎木。 她就那樣靜靜地躺著,像睡著了一般博烂。 火紅的嫁衣襯著肌膚如雪香椎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天禽篱,我揣著相機(jī)與錄音畜伐,去河邊找鬼。 笑死躺率,一個胖子當(dāng)著我的面吹牛玛界,可吹牛的內(nèi)容都是我干的万矾。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼慎框,長吁一口氣:“原來是場噩夢啊……” “哼良狈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起笨枯,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤薪丁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后馅精,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體严嗜,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年洲敢,在試婚紗的時候發(fā)現(xiàn)自己被綠了漫玄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡沦疾,死狀恐怖称近,靈堂內(nèi)的尸體忽然破棺而出第队,到底是詐尸還是另有隱情哮塞,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布凳谦,位于F島的核電站忆畅,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏尸执。R本人自食惡果不足惜家凯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望如失。 院中可真熱鬧绊诲,春花似錦、人聲如沸褪贵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脆丁。三九已至世舰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間槽卫,已是汗流浹背跟压。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留歼培,地道東北人震蒋。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓茸塞,卻偏偏與公主長得像,于是被迫代替她去往敵國和親喷好。 傳聞我的和親對象是個殘疾皇子翔横,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348