首页 > 解决方案 > PhaseScriptExecution Run\ Script /Users/runner/Library/Developer/Xcode/DerivedData/Runner 构建flutter ios app时

问题描述

当我在 Github Actions() 中编译我的项目时bundle exec fastlane beta,显示此错误

** ARCHIVE FAILED **


The following build commands failed:
    PhaseScriptExecution Run\ Script /Users/runner/Library/Developer/Xcode/DerivedData/Runner-gzzbtgmsqethlzedjqlbspydxjjv/Build/Intermediates.noindex/ArchiveIntermediates/Runner/IntermediateBuildFilesPath/Runner.build/Release-iphoneos/Runner.build/Script-9740EEB61CF901F6004384FC.sh
(1 failure)
[12:03:09]: Exit status: 65

我现在使用的版本:

当我在本地机器上编译时,它可以成功完成。哪里出了问题,我应该怎么做才能解决它?这是我的 GitHub Actions 脚本:

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
          gem install cocoapods -v 1.10.1
          bundle install
          gem install fastlane -v 2.177.0
      - 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
      - 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 }}

这是我的 fastlane 配置文件:

default_platform(:ios)

platform :ios do
  desc "Push a new beta build to pgy"
  before_all do
    ENV["CACHE_GIT_URL"] = ENV["GIT_URL"]
  end

  lane :beta do
    xcode_select("/Applications/Xcode_12.4.app")
    if is_ci
      create_keychain(
        name: ENV['MATCH_KEYCHAIN_NAME'],
        password: ENV["MATCH_KEYCHAIN_PASSWORD"],
        default_keychain: true,
        unlock: true,
        timeout: 3600,
        lock_when_sleeps: false
      )
    end

    match(
      app_identifier: ENV["APP_IDENTIFIER"],
      git_url: ENV["GIT_URL"],
      type: "adhoc",
      readonly: is_ci,
      keychain_name: ENV['MATCH_KEYCHAIN_NAME'],
      keychain_password: ENV["MATCH_KEYCHAIN_PASSWORD"]
    )

    build_app(
        workspace: "Runner.xcworkspace",
        scheme: "Runner",
        export_method: "ad-hoc"
    )

    pgyer(
        api_key: ENV['PGY_API_KEY'],
        user_key: ENV['PGY_USER_KEY']
    )
  end
end

这是错误片段:

在此处输入图像描述

标签: iosflutter

解决方案


可能是 Flutter 2.0.1 的 null-safety 导致构建发布失败(我发现其他错误可能导致此错误,但构建错误提示与实际错误无关)。我通过预构建项目修复它,在工作流 ci 文件中添加这一行:

- run: flutter build ios --release --no-codesign --no-sound-null-safety

推荐阅读