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
相关产品推荐
相关产品推荐

