Azure DevOps Сборка Xamarin.IOS с IOS 12 в качестве цели - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть Приложение, написанное с помощью Xamarin, и сборочная линия на Azure Devops.Это прекрасно работает, когда я нацелился на IOS 11.x.Однако я бы хотел обновить SDK до 12, поскольку Apple начнет применять его начиная с марта 2019 года:

Проблема с версией SDK - это приложение было создано с использованием iOS 11.4 SDK.Начиная с марта 2019 года, все приложения iOS, представленные в App Store, должны быть собраны с помощью iOS 12.1 SDK или более поздней версии, включенной в Xcode 10.1 или более поздней версии.

Но при сборке я всегда получаю эту ошибку в своемКонвейер 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.

На основании этой статьи Я попытался установить версию SDK с помощью этого сценария:

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

К сожалению, он по-прежнему использует 11 SDKвместо 12. Я выбрал неправильную версию Mono или это неправильный подход к выбору Xamarin.IOS SDK?

Моя полная сборка YAML для задания IOS:

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 голосов
/ 21 февраля 2019

Теперь вы сможете выбрать правильную версию Mono и Xcode, основываясь на этой документации .В DevOps Azure в конвейерах сборки и выпуска (до задачи сборки 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"
0 голосов
/ 30 января 2019

Это похоже на проблему с доступностью правильной версии библиотеки Xamarin.iOS (12.0 или выше) на машине сборки DevOps.Хотя, согласно моим наблюдениям, оно было включено в последние обновления VS 15.9 (для Windows) или, возможно, через расширение Tools for Xamarin (здесь еще не совсем ясно, как добраться до локального компьютера), VS на компьютере сборки Azure DevOpsравно 15.8 и поставляется с Xamarin.iOS по умолчанию 11. Таким образом, здесь есть варианты: использовать свою собственную машину сборки или ждать 15.9, чтобы [надеюсь] вовремя прийти к машинам DevOps.

0 голосов
/ 12 февраля 2019

В случае, если это поможет: сборка SDK и цель развертывания - это разные вещи.Я собираюсь использовать 12.1 SDK, но моя цель развертывания и минимальная версия ОС установлены на 8.0.

0 голосов
/ 18 декабря 2018

Проверьте ключ 'MinimumOSVersion' в info.plist.Если его не существует, добавьте его.

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