Azure DevOps以IOS 12为目标构建Xamarin.IOS

时间:2018-12-17 08:09:34

标签: xamarin.ios azure-devops

我在Azure Devops上有一个用Xamarin编写的应用程序和一个buildpipline。当我以IOS 11.x为目标时,这可以正常构建。但是我想更新到SDK 12,因为Apple从2019年3月开始强制执行此操作:

  

SDK版本问题-该应用是使用iOS 11.4 SDK构建的。开始   2019年3月,提交给App Store的所有iOS应用必须使用   Xcode 10.1或更高版本中包含的iOS 12.1 SDK或更高版本。

但是在构建时,我总是在我的Azure Devops管道中收到此错误:

MTOUCH : error MT0074: Xamarin.iOS 11.14.0 does not support a deployment target of 12.0 for iOS (the maximum is 11.4). Please select an older deployment target in your project's Info.plist or upgrade to a newer version of Xamarin.iOS.

基于此article,我尝试使用以下脚本设置SDK版本:

 /bin/bash -c "sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh 5_12_0"

不幸的是,它仍然使用11 SDK而不是12。 我选择了错误的Mono版本还是选择Xamarin.IOS SDK的方法错误?

我为IOS作业完成的完整构建YAML:

queue:
  name: Hosted macOS
  demands: 
  - xcode
  - Xamarin.iOS

steps:
- bash: |
   echo "Select Xamarin Version"
    /bin/bash -c "sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh 5_12_0"
  displayName: 'Select Xamarin Version'

- task: InstallAppleCertificate@2
  displayName: 'Install an Apple certificate'
  inputs:
    certSecureFile: '6f1c094d-c147-41e0-9bc6-c9fe9a40b2e6'

    certPwd: '$(P12password)'


- task: InstallAppleProvisioningProfile@1
  displayName: 'Install an Apple provisioning profile'
  inputs:
    provProfileSecureFile: 'a883a983-6027-4382-afd4-94b52736323c'


- task: NuGetToolInstaller@0
  displayName: 'Use NuGet'
  inputs:
    versionSpec: 4.x


- task: NuGetCommand@2
  displayName: 'NuGet restore'
  inputs:
    restoreSolution: '$(Parameters.solution)'


- task: XamariniOS@2
  displayName: 'Build Xamarin.iOS '
  inputs:
    solutionFile: Src/MoneyFox.Ios/MoneyFox.iOS.csproj

    configuration: '$(BuildConfiguration)'

4 个答案:

答案 0 :(得分:5)

您现在应该能够基于this documentation选择正确的Mono和Xcode版本。在构建和发布管道中的Azure DevOps中(分别在Xamarin.iOS构建任务和发布任务之前),我添加了一个运行以下命令的命令行任务:

echo 'Updating fastlane...'
sudo gem install fastlane

echo 'Selecting Mono version...'
/bin/bash -c "sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh 5_16_0"

echo 'Selecting Xcode version...'
/bin/bash -c "echo '##vso[task.setvariable variable=MD_APPLE_SDK_ROOT;]'/Applications/Xcode_10.1.app;sudo xcode-select --switch /Applications/Xcode_10.1.app/Contents/Developer"

答案 1 :(得分:1)

以防万一:构建SDK和部署目标是不同的。我正在使用12.1 SDK进行构建,但是我的部署目标和最低OS版本都设置为8.0。

答案 2 :(得分:0)

在info.plist中检查“ MinimumOSVersion”键。 如果不存在,请添加它。

<key>MinimumOSVersion</key>
    <string>11.0</string>

答案 3 :(得分:0)

这似乎是DevOps构建计算机上正确版本的Xamarin.iOS库(12.0或更高版本)的可用性问题。根据我的观察,VS 15.9的最新更新(适用于Windows)或可能通过Xamarin扩展工具(仍然不确定此处如何完全到达本地计算机)进行了观察,但Azure DevOps构建计算机上的VS是15.8,并带有默认的Xamarin.iOS 11。 因此,这里的选项实际上是使用您自己的构建计算机,或者等待15.9 [希望]及时到达DevOps计算机。