You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions发布.NET MAUI iOS应用遇UIKit版本兼容错误

问题描述

此前使用GitHub Action将.NET MAUI应用发布至TestFlight一切正常,但今日出现错误:

类型'UIKit.UISceneSessionActivationRequest'(用于UIKit.UIApplication.ActivateSceneSession的参数)在iOS 16.2中不可用(它于iOS 17.0引入)。请使用更新版本的iOS SDK(通常需安装最新版Xcode)。

相关背景:

  • GitHub Action已配置使用macos-latest
  • 仅做了Bug修复及新增几个调用API并通过CollectionView展示数据的页面,未引入新特性
  • 当前应用目标框架为.NET 8,且此前使用该Action成功发布过.NET 8 RC2版本

GitHub Action YAML配置如下:

name: Build & Publish My .NET MAUI iOS App

on:
  pull_request:
    branches: [ "master" ]

jobs:
  build-pack-n-ship:

    runs-on: macos-latest

    steps:
    - uses: actions/checkout@v3
    - name: Setup .NET
      uses: actions/setup-dotnet@v3
      with:
        dotnet-version: 8.0.x
    - name: Install MAUI workload
      run: dotnet workload install maui
    - name: Import Code-Signing Certificates
      uses: Apple-Actions/import-codesign-certs@v1
      with:
        p12-filepath: 'MyAppleDistributionCert.p12'
        p12-password: ${{ secrets.CERTIFICATES_P12_PASSWORD }}
    - name: Download Apple Provisioning Profiles
      uses: Apple-Actions/download-provisioning-profiles@v1
      with:
        bundle-id: 'myapp.mydomain.com'
        issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
        api-key-id: ${{ secrets.APPSTORE_KEY_ID }}
        api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }}
    - name: Restore dependencies
      run: dotnet restore
    - name: Build and Publish
      run: dotnet publish -c Release -f:net8.0-ios /p:ArchiveOnBuild=true /p:EnableAssemblyILStripping=false
    - name: List generated files
      run: ls -l
    - name: Upload Build Artifact
      uses: actions/upload-artifact@v3.0.0
      with:
        path: '**/*.ipa'
    - name: 'Upload app to TestFlight'
      uses: apple-actions/upload-testflight-build@v1
      with: 
        app-path: './MyApp/bin/Release/net8.0-ios/ios-arm64/publish/MyApp.ipa'
        issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
        api-key-id: ${{ secrets.APPSTORE_KEY_ID }}
        api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }}
解决建议
  • 指定兼容iOS 17的Xcode版本:macos-latest默认的Xcode版本可能未包含iOS 17 SDK,在Action中添加步骤强制切换到最新Xcode,或指定具体版本(如Xcode 15+):
    切换到默认最新Xcode:

    - name: Use latest Xcode
      run: sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
    

    或指定Xcode 15版本:

    - name: Install Xcode 15
      uses: maxim-lobanov/setup-xcode@v1
      with:
        xcode-version: '15.0'
    
  • 更新/固定.NET MAUI workload版本:清理旧workload并安装最新兼容版本,或固定到稳定版避免自动引入iOS 17依赖:

    dotnet workload update
    dotnet workload install maui --version 8.0.100
    
  • 显式设置目标iOS版本:在项目的.csproj文件中添加/修改配置,确保目标iOS版本不低于17.0,让编译时匹配对应SDK:

    <PropertyGroup>
      <TargetFrameworks>net8.0-ios</TargetFrameworks>
      <TargetPlatformMinVersion>17.0</TargetPlatformMinVersion>
      <RuntimeIdentifier>ios-arm64</RuntimeIdentifier>
    </PropertyGroup>
    
  • 清理NuGet缓存:GitHub Action可能缓存了旧的SDK或依赖包,添加清理步骤确保使用最新资源:

    - name: Clean NuGet cache
      run: dotnet nuget locals all --clear
    

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 18:05:21