Flutter 如何在发布模式下使用颤振构建配置忽略空检查
现在我在发布模式下编译项目,告诉我一些包不支持空检查Flutter 如何在发布模式下使用颤振构建配置忽略空检查,flutter,Flutter,现在我在发布模式下编译项目,告诉我一些包不支持空检查 This will generate a JSON format file containing all messages that need to be translated. ../../.pub-cache/hosted/pub.flutter-io.cn/video_player_platform_interface-2.2.0/lib/messages.dart:4:1: Error: A library c
This will generate a JSON format file containing all messages that
need to be translated.
../../.pub-cache/hosted/pub.flutter-io.cn/video_player_platform_interface-2.2.0/lib/messages.dart:4:1: Error: A
library can't opt out of null safety by default, when using sound null safety.
// @dart = 2.8
^^^^^^^^^^^^^^
../../.pub-cache/hosted/pub.flutter-io.cn/wakelock_platform_interface-0.1.0+1/lib/messages.dart:4:1: Error: A
library can't opt out of null safety by default, when using sound null safety.
// @dart = 2.8
^^^^^^^^^^^^^^
Error: Cannot run with sound null safety, because the following dependencies
don't support null safety:
- package:shared_preferences
- package:timeago
- package:hive
- package:hive_flutter
- package:state_notifier
- package:fish_redux
- package:flutter_hooks
- package:shared_preferences_linux
- package:shared_preferences_platform_interface
- package:shared_preferences_windows
- package:crypto
- package:path_provider
- package:path_provider_linux
- package:path_provider_windows
- package:path_provider_platform_interface
- package:xdg_directories
- package:convert
- package:plugin_platform_interface
- package:pull_to_refresh
- package:flutter_icons
- package:animations
- package:flutter_slidable
- package:http
- package:fluttertoast
- package:share
- package:flutter_secure_storage
- package:logger
- package:dio
- package:intl_phone_number_input
- package:url_launcher
- package:flutter_html
- package:mime
- package:http_parser
- package:url_launcher_platform_interface
- package:webview_flutter
- package:uni_links
- package:equatable
- package:libphonenumber
- package:csslib
- package:html
- package:flutter_layout_grid
- package:chewie
- package:chewie_audio
- package:video_player
- package:shimmer
- package:video_player_platform_interface
- package:quiver
- package:wakelock
- package:wakelock_platform_interface
For solutions, see https://dart.dev/go/unsound-null-safety
Command PhaseScriptExecution failed with a nonzero exit code
note: Using new build system
note: Building targets in parallel
note: Planning build
note: Constructing build description
在fastlane中构建应用程序时,如何在Flatter的发布模式中忽略空检?我已经知道在本地构建时添加参数,如下所示:
~/apps/flutter/bin/flutter build ios --release --no-sound-null-safety
如何在xcode构建发布模式中添加默认的构建参数
--无声音的空安全性?目前仍在调整包的空安全性,因此在此之前,您必须在构建时通过更改main.dart-like来选择退出空安全性
// @dart=2.9
import 'src/my_app.dart';
main() {
//...
}
/@dart=2.9
应该可以做到这一点。如果没有,请尝试在pubspec.yaml中更改环境版本,如
environment:
sdk: ">=2.7.0 <3.0.0"
环境:
sdk:“>=2.7.0目前软件包仍在针对空安全性进行调整,因此在此之前,您必须通过更改main.dart-like来选择退出空安全性
// @dart=2.9
import 'src/my_app.dart';
main() {
//...
}
/@dart=2.9
应该可以做到这一点。如果不行,请尝试在pubspec.yaml中更改环境版本
environment:
sdk: ">=2.7.0 <3.0.0"
环境:
sdk:“>=2.7.0我在GitHub操作工作流文件中找到添加步骤(不需要在Fastlane中添加):
将修复此问题(因为升级到Flatter 2.0.1)。这是完整的工作流文件:
name: Cruise-CI
on:
push:
branches: [ main ]
jobs:
build:
#
# more macOS version:
# https://github.com/actions/virtual-environments/blob/main/images/macos/macos-10.15-Readme.md
#
runs-on: macos-10.15
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
with:
java-version: '12.x'
- uses: subosito/flutter-action@v1
with:
flutter-version: '2.0.1'
#
# more xcode version path:
# https://github.com/actions/virtual-environments/blob/main/images/macos/macos-10.15-Readme.md
#
- name: Select Xcode version
run: sudo xcode-select -s '/Applications/Xcode_12.4.app/Contents/Developer'
- name: Bundle install
run: |
cd ./ios
brew install gpg
curl -sSL https://rvm.io/mpapis.asc | gpg --import -
curl -sSL https://rvm.io/pkuczynski.asc | gpg --import -
echo 409B6B1796C275462A1703113804BB82D39DC0E3:6: | gpg --import-ownertrust
echo 7D2BAF1CF37B13E2069D6956105BD0E739499BDB:6: | gpg --import-ownertrust
curl -sSL https://get.rvm.io | bash -s -- --ignore-dotfiles
source $HOME/.rvm/scripts/rvm
source ~/.bash_profile
rvm --version
rvm install 2.7.2
rvm use --default 2.7.2
gem install cocoapods -v 1.10.0
gem install fastlane -v 2.177.0
bundle install
- name: Install tools
run: |
flutter precache
flutter pub get
cd ./ios
pod install
#- run: flutter pub get
#- run: flutter build apk
- run: flutter build ios --release --no-codesign --no-sound-null-safety
- name: Setup SSH Keys and known_hosts for fastlane match
run: |
SSH_PATH="$HOME/.ssh"
mkdir -p "$SSH_PATH"
touch "$SSH_PATH/known_hosts"
echo "$PRIVATE_KEY" > "$SSH_PATH/id_rsa"
chmod 700 "$SSH_PATH"
ssh-keyscan github.com >> ~/.ssh/known_hosts
chmod 600 "$SSH_PATH/known_hosts"
chmod 600 "$SSH_PATH/id_rsa"
eval $(ssh-agent)
ssh-add "$SSH_PATH/id_rsa"
env:
PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
- name: Deploy to TestFlight/PGY
run: |
cd ./ios
bundle exec fastlane beta
env:
FLUTTER_ROOT: ${{ secrets.FLUTTER_ROOT }}
APPLE_ID: ${{ secrets.APPLE_ID }}
GIT_URL: ${{ secrets.GIT_URL }}
PGY_USER_KEY: ${{ secrets.PGY_USER_KEY }}
PGY_API_KEY: ${{ secrets.PGY_API_KEY }}
TEAM_ID: ${{ secrets.TEAM_ID }}
ITC_TEAM_ID: ${{ secrets.ITC_TEAM_ID }}
FASTLANE_USER: ${{ secrets.FASTLANE_USER }}
FASTLANE_PASSWORD: ${{ secrets.FASTLANE_PASSWORD }}
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD: ${{ secrets.FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD }}
FASTLANE_SESSION: ${{ secrets.FASTLANE_SESSION }}
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
MATCH_KEYCHAIN_NAME: ${{ secrets.MATCH_KEYCHAIN_NAME }}
MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }}
DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS: ${{ secrets.DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS }}
我在GitHub操作工作流文件中找到添加步骤(不需要在Fastlane中添加):
将修复此问题(因为升级到Flatter 2.0.1)。这是完整的工作流文件:
name: Cruise-CI
on:
push:
branches: [ main ]
jobs:
build:
#
# more macOS version:
# https://github.com/actions/virtual-environments/blob/main/images/macos/macos-10.15-Readme.md
#
runs-on: macos-10.15
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
with:
java-version: '12.x'
- uses: subosito/flutter-action@v1
with:
flutter-version: '2.0.1'
#
# more xcode version path:
# https://github.com/actions/virtual-environments/blob/main/images/macos/macos-10.15-Readme.md
#
- name: Select Xcode version
run: sudo xcode-select -s '/Applications/Xcode_12.4.app/Contents/Developer'
- name: Bundle install
run: |
cd ./ios
brew install gpg
curl -sSL https://rvm.io/mpapis.asc | gpg --import -
curl -sSL https://rvm.io/pkuczynski.asc | gpg --import -
echo 409B6B1796C275462A1703113804BB82D39DC0E3:6: | gpg --import-ownertrust
echo 7D2BAF1CF37B13E2069D6956105BD0E739499BDB:6: | gpg --import-ownertrust
curl -sSL https://get.rvm.io | bash -s -- --ignore-dotfiles
source $HOME/.rvm/scripts/rvm
source ~/.bash_profile
rvm --version
rvm install 2.7.2
rvm use --default 2.7.2
gem install cocoapods -v 1.10.0
gem install fastlane -v 2.177.0
bundle install
- name: Install tools
run: |
flutter precache
flutter pub get
cd ./ios
pod install
#- run: flutter pub get
#- run: flutter build apk
- run: flutter build ios --release --no-codesign --no-sound-null-safety
- name: Setup SSH Keys and known_hosts for fastlane match
run: |
SSH_PATH="$HOME/.ssh"
mkdir -p "$SSH_PATH"
touch "$SSH_PATH/known_hosts"
echo "$PRIVATE_KEY" > "$SSH_PATH/id_rsa"
chmod 700 "$SSH_PATH"
ssh-keyscan github.com >> ~/.ssh/known_hosts
chmod 600 "$SSH_PATH/known_hosts"
chmod 600 "$SSH_PATH/id_rsa"
eval $(ssh-agent)
ssh-add "$SSH_PATH/id_rsa"
env:
PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
- name: Deploy to TestFlight/PGY
run: |
cd ./ios
bundle exec fastlane beta
env:
FLUTTER_ROOT: ${{ secrets.FLUTTER_ROOT }}
APPLE_ID: ${{ secrets.APPLE_ID }}
GIT_URL: ${{ secrets.GIT_URL }}
PGY_USER_KEY: ${{ secrets.PGY_USER_KEY }}
PGY_API_KEY: ${{ secrets.PGY_API_KEY }}
TEAM_ID: ${{ secrets.TEAM_ID }}
ITC_TEAM_ID: ${{ secrets.ITC_TEAM_ID }}
FASTLANE_USER: ${{ secrets.FASTLANE_USER }}
FASTLANE_PASSWORD: ${{ secrets.FASTLANE_PASSWORD }}
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD: ${{ secrets.FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD }}
FASTLANE_SESSION: ${{ secrets.FASTLANE_SESSION }}
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
MATCH_KEYCHAIN_NAME: ${{ secrets.MATCH_KEYCHAIN_NAME }}
MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }}
DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS: ${{ secrets.DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS }}
我还遇到了一个问题,我需要在min SDK版本中添加不相关的语言功能,并被迫解决空安全问题,同时仍然需要将默认构建设置为不可靠的空安全,直到我无法控制的所有依赖项都被转换。至少可以说,关于这一点的文档是糟糕透顶的,而且从pubspec.yaml
中没有简单的方法来禁用这一点是荒谬的
在浏览了一下flatter源代码之后,我发现传递--no sound null safety
标志的方式是通过额外的\u FRONT\u END\u OPTIONS
环境变量。您应该能够通过简单地将其添加到环境定义中来强制它。对于Linux和Windows,黑客攻击CMakeLists.txt
在默认情况下足以将其关闭:
COMMAND ${CMAKE_COMMAND} -E env
# Temporarily disable null safety checks until all packages have migrated
EXTRA_FRONT_END_OPTIONS=--no-sound-null-safety
${FLUTTER_TOOL_ENVIRONMENT}
"${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh"
${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE}
我还需要这一点来让snapcraft构建工作正常,因为这里没有操作构建选项的选项。我还遇到了一个问题,我需要在min SDK版本中添加不相关的语言功能,并被迫解决空安全问题,在我无法控制的所有依赖项被转换之前,仍然需要将构建默认为不可靠的空安全。至少可以说,关于这一点的文档是糟糕透顶的,而且从pubspec.yaml
中没有简单的方法来禁用这一点是荒谬的
在浏览了一下flatter源代码之后,我发现传递--no sound null safety
标志的方式是通过额外的\u FRONT\u END\u OPTIONS
环境变量。您应该能够通过简单地将其添加到环境定义中来强制它。对于Linux和Windows,黑客攻击CMakeLists.txt
在默认情况下足以将其关闭:
COMMAND ${CMAKE_COMMAND} -E env
# Temporarily disable null safety checks until all packages have migrated
EXTRA_FRONT_END_OPTIONS=--no-sound-null-safety
${FLUTTER_TOOL_ENVIRONMENT}
"${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh"
${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE}
我还需要这个来让snapcraft构建工作正常进行,因为这里没有操作构建选项的选项。如何使fastlane添加——当build@Siddharth AgrawalI无法降级版本时没有声音的空安全
配置,因为我将所有代码都更改为null safety@Siddharth agrawalh如何使fastlane添加——当build@Siddharth时没有声音的空安全
配置AgrawalI无法降低版本,因为我将所有代码都更改为null safety@Siddharth Agrawal