Coder Social home page Coder Social logo

leanflutter / flutter_distributor Goto Github PK

View Code? Open in Web Editor NEW
730.0 730.0 92.0 1.37 MB

An all-in-one Flutter application packaging and distribution tool, providing you with a one-stop solution to meet various distribution needs.

Home Page: https://distributor.leanflutter.dev/

License: MIT License

Dart 96.26% TypeScript 0.12% JavaScript 2.13% MDX 1.23% CSS 0.03% Astro 0.23%
flutter flutter-app-packager flutter-packager

flutter_distributor's Issues

Null check operator used on a null value

执行操作

flutter_distributor publish --path dist/1.8.0+314/app-1.8.0+314-android.apk --targets fir
# or
flutter_distributor publish --path dist/1.8.0+314/app-1.8.0+314-android.apk --targets pgyer

错误

Unhandled exception:
Null check operator used on a null value
#0      AppPackagePublisherFir.publish (package:app_package_publisher_fir/src/app_package_publisher_fir.dart:59:60)
#1      FlutterAppPublisher.publish (package:flutter_app_publisher/src/flutter_app_publisher.dart:21:28)
#2      FlutterDistributor.publish (package:flutter_distributor/src/flutter_distributor.dart:82:54)
#3      CommandPublish.run (file:///Users/zero/project/zero/dart/flutter_distributor/packages/flutter_distributor/bin/command_publish.dart:24:23)
#4      CommandRunner.runCommand (package:args/command_runner.dart:209:27)
#5      main (file:///Users/zero/project/zero/dart/flutter_distributor/packages/flutter_distributor/bin/main.dart:18:16)
#6      _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:295:32)
#7      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)

错误情况

如果我没有把以下 key 添加到环境变量中就会报错

  • 环境变量 Key:FIR_API_TOKEN、PGYER_API_TOKEN

【Windows】自定义应用名、默认选中创建桌面快捷方式

是否可添加功能
make_config.yaml中是否可添加配置项
1、Windows中是否可添加appName设置
控制iss文件中的:#define MyAppName "XXXX"
2、添加是否默认选中“创建桌面快捷方式”,配置项目

控制iss文件中的 [Tasks] 节点下的
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"
默认check值

打包ipa出错

打包ipa出错

不知道为什么打包ipa一直都是报这个错

版本

flutter_distributor: ^0.1.4

配置

......省略
      - name: release-dev-ios
        package:
          platform: ios
          target: ipa
          build_args:
            target: lib/main.dart
            export-options-plist: ios/ExportOptions.plist
        publish_to: pgyer

打包日志(xxx为隐藏信息)

Packaging xxx 1.0.0+1 as ipa:
Building...
Cleaning Xcode workspace...
8.0s
Deleting build...
742ms
Deleting .dart_tool...
275ms
Deleting .packages...                                                0ms

Deleting Generated.xcconfig...
0ms
Deleting flutter_export_environment.sh...                            0ms
Deleting Flutter.podspec...
0ms
Deleting .flutter-plugins-dependencies...
0ms
Deleting .flutter-plugins...
0ms
Running "flutter pub get" in xxx...
4.4s
Archiving xxx...
Automatically signing iOS for device deployment using specified development team in Xcode project: xxx
Running pod install...
12.1s
Running Xcode build...

Xcode archive done.                                         526.4s
Built /Users/xxx/build/ios/archive/Runner.xcarchive.

💪 Building with sound null safety 💪
Building IPA...
16.0s
Encountered error while building IPA:
BuildError
#0      AppBuilder.build (package:flutter_app_builder/src/app_builder.dart:52:7)
<asynchronous suspension>
#1      FlutterAppBuilder.build (package:flutter_app_builder/src/flutter_app_builder.dart:42:12)
<asynchronous suspension>
#2      FlutterDistributor.package (package:flutter_distributor/src/flutter_distributor.dart:146:25)
<asynchronous suspension>
#3      FlutterDistributor.release (package:flutter_distributor/src/flutter_distributor.dart:300:43)
<asynchronous suspension>
#4      CommandRelease.run (file:///xxx/.pub-cache/hosted/pub.flutter-io.cn/flutter_distributor-0.1.4/bin/command_release.dart:33:5)
<asynchronous suspension>
#5      CommandRunner.runCommand (package:args/command_runner.dart:209:13)
<asynchronous suspension>
#6      main (file:///xxx/.pub-cache/hosted/pub.flutter-io.cn/flutter_distributor-0.1.4/bin/main.dart:38:3)
<asynchronous suspension>

Unhandled exception:
Bad state: No element
#0      List.first (dart:core-patch/growable_array.dart:339:5)
#1      FlutterDistributor.release (package:flutter_distributor/src/flutter_distributor.dart:309:50)
<asynchronous suspension>
#2      CommandRelease.run (file:///xxx/.pub-cache/hosted/pub.flutter-io.cn/flutter_distributor-0.1.4/bin/command_release.dart:33:5)
<asynchronous suspension>
#3      CommandRunner.runCommand (package:args/command_runner.dart:209:13)
<asynchronous suspension>
#4      main (file:///xxx/.pub-cache/hosted/pub.flutter-io.cn/flutter_distributor-0.1.4/bin/main.dart:38:3)
<asynchronous suspension>

Support custom `artifact_name` and `channel` parameter in package command.

My solution is to provide custom artifact_name and add arch parameter in package command.

output: dist/
artifact_name: "{{name}}{{#channel}}-{{channel}}{{/channel}}-{{version}}}-{{platform}}.{{ext}}"
releases:
  - name: release
    jobs:
      - name: arm32
        package:
          platform: android
          target: apk
          build_args:
            target-platform: android-arm
      - name: arm64
        package:
          platform: android
          arch: arm64
          target: apk
          build_args:
            target-platform: android-arm64

Originally posted by @lijy91 in #53 (comment)

type 'Null' is not a subtype of type 'List<dynamic>' in type cast

运行 flutter_distributor package --platform=mac --targets=dmg,zip 后异常

type 'Null' is not a subtype of type 'List<dynamic>' in type cast
#0      new DistributeOptions.fromJson (package:flutter_distributor/src/distribute_options.dart:23:48)
#1      FlutterDistributor.distributeOptions (package:flutter_distributor/src/flutter_distributor.dart:63:48)
#2      FlutterDistributor.package (package:flutter_distributor/src/flutter_distributor.dart:133:35)
#3      CommandPackage.run (file:///Users/mac/.pub-cache/hosted/pub.flutter-io.cn/flutter_distributor-0.0.9/bin/command_package.dart:39:23)
#4      CommandRunner.runCommand (package:args/command_runner.dart:209:27)
#5      main (file:///Users/mac/.pub-cache/hosted/pub.flutter-io.cn/flutter_distributor-0.0.9/bin/main.dart:28:16)
<asynchronous suspension>

/// distribute_options.yaml

output: dist/

/// flutter_distributor 0.0.9.

pgyer 上传成功但是显示失败

pgyer 上传成功但是显示失败,实际已上传成功

执行命令

flutter_distributor publish --path dist/1.8.0+314/app-1.8.0+314-android.apk --targets pgyer

结果

Publish to pgyer: 100%
Unhandled exception:
PublishError: 0 -
#0      AppPackagePublisherPgyer.publish (package:app_package_publisher_pgyer/src/app_package_publisher_pgyer.dart:43:7)
<asynchronous suspension>
#1      FlutterAppPublisher.publish (package:flutter_app_publisher/src/flutter_app_publisher.dart:21:12)
<asynchronous suspension>
#2      FlutterDistributor.publish (package:flutter_distributor/src/flutter_distributor.dart:82:37)
<asynchronous suspension>
#3      CommandPublish.run (file:///Users/zero/.pub-cache/hosted/pub.flutter-io.cn/flutter_distributor-0.0.6/bin/command_publish.dart:24:5)
<asynchronous suspension>
#4      CommandRunner.runCommand (package:args/command_runner.dart:209:13)
<asynchronous suspension>
#5      main (file:///Users/zero/.pub-cache/hosted/pub.flutter-io.cn/flutter_distributor-0.0.6/bin/main.dart:18:3)
<asynchronous suspension>

数据返回

  • 正常成功
{
    "code": 0,
    "message": "",
    "data": {
        "buildKey": "9ef94134e9efd5e3850146f7ffd4bdb7",
        "buildType": "2",
        "buildIsFirst": "0",
        "buildIsLastest": "1",
        "buildFileKey": "36c9c143a2204cb77601c0e43c3bb063.apk",
        "buildFileName": "app-1.8.0+314-android.apk",
        "buildFileSize": "17879795",
        "buildName": "xxx",
        "buildVersion": "1.8.0",
        "buildVersionNo": "314",
        "buildBuildVersion": "251",
        "buildIdentifier": "xxxx",
        "buildIcon": "eec62155ff03cde14f628bd472a30d26",
        "buildDescription": "",
        "buildUpdateDescription": "",
        "buildScreenshots": "",
        "buildShortcutUrl": "xgja",
        "buildCreated": "2021-12-24 12:52:56",
        "buildUpdated": "2021-12-24 12:52:56",
        "buildQRCodeURL": "https://www.pgyer.com/app/qrcodeHistory/e68ed2fb6e4224eb85ac15c8291d9de1b25103893accffa146c6f14739746027"
    }
}
  • 失败
{
    "code": 1002,
    "message": "_api_key not found"
}

int? code = response.data['code'];
if (code != null) {
String message = response.data['message'];
throw PublishError('$code - $message');
}
return PublishResult(
url: response.data!['buildShortcutUrl'],
);

  • 第 41 行应该判断 code != 0
  • 第 47 行应该取 response.data!['data']['buildShortcutUrl'] ,并且应该拼接:http://www.pgyer.com/

url 取 buildShortcutUrl 还是 buildKey

  • buildKey 是指当前 build 的版本,buildShortcutUrl 是整个引用,大多情况下是相等的,但是多人同时打包情况,就会不同
  • 如果 buildKey 是最新的版本会自动重定向到 buildShortcutUrl
  • 所以这里应该取 buildKey 拼接 'http://www.pgyer.com/$buildKey'

参考文档

[Linux] AUR

Support deployment of flutter apps in AUR

低版本使用

ERR : The current Dart SDK version is 2.13.3.
|
| Because flutter_distributor >=0.0.6 depends on pubspec_parse >=1.2.0 which requires SDK version >=2.14.0 <3.0.0, flutter_distributor >=0.0.6 is forbidden.
| So, because pub global activate depends on flutter_distributor 0.0.9, version solving failed.

低版本现在不可以用吗?

[Linux] Nix

Support deployment for Nix package

nixos.org

`release` supports filter option

like

flutter_distributor release --name dev --filter-platform android

or

flutter_distributor release --name dev --filter-target apk

ProcessException: No such file or directory

执行

flutter_distributor publish --path /dist/1.8.0+314/app-1.8.0+314-android.apk --targets fir

Error

Unhandled exception:
ProcessException: No such file or directory
  Command: apkanalyzer manifest print /dist/1.8.0+314/app-1.8.0+314-android.apk
#0      AppPackagePublisherFir.publish (package:app_package_publisher_fir/src/app_package_publisher_fir.dart:109:7)
<asynchronous suspension>
#1      FlutterAppPublisher.publish (package:flutter_app_publisher/src/flutter_app_publisher.dart:21:12)
<asynchronous suspension>
#2      FlutterDistributor.publish (package:flutter_distributor/src/flutter_distributor.dart:82:37)

WinSparkle.lib 定位错误

“D:\WORKSPACE\Flutter\build\windows\plugins\auto_updater\auto_updater_plugin.vcxproj”(默认目标) (4) ->
[ ] (Link 目标) ->
[ ] 0 个警告
[ ] 1 个错误
[ ] 已用时间 00:00:25.45
[ ] LINK : fatal error LNK1104: 无法打开文件“D:\WORKSPACE\Flutter\windows\flutter\ephemeral.plugin_symlinks\auto_updater\windows\WinSparkle-0.7.0\x64\Release\WinSparkle.lib” [D:\WORKSPACE\Flutter\build\windows\plugins\auto_updater\auto_updater_plugin.vcxproj]

WinSparkle.lib 文件位置定位错误
报错路径:D:\WORKSPACE\Flutter\windows\flutter\ephemeral.plugin_symlinks\auto_updater\windows\WinSparkle-0.7.0\x64\Release
正确路径:D:\WORKSPACE\Flutter\windows\flutter\ephemeral.plugin_symlinks\auto_updater\windows\WinSparkle-0.7.0\Release
image

Windows installation package configuration

Package the exe installation package, hoping to support the configuration of the installation interface language, custom shortcut names, and some other configurations

IOS打包出来的IPA文件是上个版本的

修改了版本号(1.0.7 -> 1.0.8)以及完善了一些APP的功能,然后调用 flutter_distributor 打包上传到蒲公英,发现 IOS 的 IPA 包版本竟然是 1.0.7,功能也是 1.0.7 的,Android又没问题。用手动的方式调用flutter build ios 然后xcode打包 ipa 出来的版本则是最新的

Support initialization command

example

flutter_distributor init

Implementation ideas

  • Determine if the user is in the flutter project directory
  • Pull the default configuration file from Github domestically (consider Chinese users)
  • Download the configuration file to the project directory

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.