Устранение неполадок приложений tvOS, созданных с помощью XamarinTroubleshooting tvOS apps built with Xamarin

В этой статье рассматриваются проблемы, которые могут возникнуть при работе с поддержкой tvOS в Xamarin.This article covers know issues you might encounter while working with Xamarin's tvOS support.

Известные проблемыKnown Issues

В текущем выпуске поддержки Xamarin tvOS имеются следующие известные проблемы.The current release of Xamarin's tvOS support has the following known issues:

  • Платформа Mono — моно 4,3 Cryptography. ProtectedData не удалось расшифровать данные из Mono 4,2.Mono Framework – Mono 4.3 Cryptography.ProtectedData fails to decrypt data from Mono 4.2. В результате пакет NuGet не сможет восстановиться с ошибкой Data unprotection failed при настройке защищенного источника NuGet.As a result, NuGet packages will fail to restore with the error Data unprotection failed when a protected NuGet source is configured.
    • Обходной путь . в Visual Studio для Mac необходимо будет добавить все источники пакетов NuGet, использующие проверку подлинности с помощью пароля, перед повторной попыткой восстановления пакетов.Workaround – In Visual Studio for Mac you will need to add back any NuGet package sources that use password authentication before re-attempting to restore the packages.
  • Visual Studio для Mac w/ F# надстройка — ошибка при создании шаблона F# Android в Windows.Visual Studio for Mac w/ F# Add-in – Error when creating an F# Android template on Windows. Это по-прежнему работает правильно на Mac.This should still function correctly on Mac.
  • Xamarin. Mac — при запуске проекта унифицированного шаблона Xamarin. Mac с целевой платформой, для Unsupportedкоторой задано Could not connect to the debugger значение, может отобразиться всплывающее окно.Xamarin.Mac – When running the Xamarin.Mac unified template project with the target Framework set to Unsupported, the popup Could not connect to the debugger may appear.
    • Возможное решение — понизить версию платформы Mono, доступную в стабильном канале.Potential Workaround – Downgrade the Mono framework version available in our Stable channel.
  • Xamarin Visual Studio & Xamarin. iOS — при развертывании приложений WatchKit в Visual Studio может возникнуть The file ‘bin\iPhoneSimulator\Debug\WatchKitApp1WatchKitApp.app\WatchKitApp1WatchKitApp’ does not exist ошибка.Xamarin Visual Studio & Xamarin.iOS – When deploying WatchKit applications in Visual studio, the error The file ‘bin\iPhoneSimulator\Debug\WatchKitApp1WatchKitApp.app\WatchKitApp1WatchKitApp’ does not exist may appear.

Сообщите об ошибках, найденных на GitHub.Please report any bugs you find on GitHub.

Устранение неполадокTroubleshooting

В следующих разделах перечислены некоторые известные проблемы, которые могут возникнуть при использовании tvOS 9 с Xamarin. tvOS, и решение этих проблем.The following sections list some known issues that can occur when using tvOS 9 with Xamarin.tvOS and the solution to those issues:

Недопустимый исполняемый файл — исполняемый объект не содержит bitcodeInvalid Executable - The executable does not contain bitcode

При попытке отправить приложение Xamarin. tvOS в магазин приложений Apple TV может появиться сообщение об ошибке в формате "недопустимый исполняемый файл — исполняемый файл не содержит bitcode" .When attempting to submit a Xamarin.tvOS app to the Apple TV App Store, you might get an error message in the form "Invalid Executable - The executable does not contain bitcode".

Чтобы решить эту проблему, выполните следующие действия.To solve this issue, do the following:

  1. В Visual Studio для Mac щелкните правой кнопкой мыши файл проекта Xamarin. tvOS в Обозреватель решений и выберите пункт Параметры.In Visual Studio for Mac, right-click on your Xamarin.tvOS Project File in the Solution Explorer and select Options.

  2. Выберите Сборка tvOS и убедитесь, что вы используете конфигурацию выпуска :Select tvOS Build and ensure that you are on the Release configuration:

  3. Добавьте --bitcode=asmonly в поле Дополнительные аргументы mtouch и нажмите кнопку ОК .Add --bitcode=asmonly to the Additional mtouch arguments field and click the OK button.

  4. Перестройте приложение в конфигурации выпуска .Rebuild your app in the Release configuration.

Проверка того, что приложение tvOS содержит BitcodeVerifying that your tvOS App Contains Bitcode

Чтобы убедиться, что сборка приложения Xamarin. tvOS содержит Bitcode, откройте приложение терминала и введите следующее:To verify that your Xamarin.tvOS App build contains Bitcode, open the Terminal app and enter the following:

otool -l /path/to/your/tv.app/tv

В выходных данных найдите следующее:In the output, look for the following:

Section
  sectname __bundle
   segname __LLVM
      addr 0x0000000100001000
      size 0x000000000000124f
    offset 4096
     align 2^0 (1)
    reloff 0
    nreloc 0
     flags 0x00000000
 reserved1 0
 reserved2 0

addrи size будут отличаться, но другие поля должны быть идентичными.addr and size will be different but other fields should be identical.

Необходимо убедиться, что любые сторонние библиотеки (.a), которые вы используете, были созданы для библиотек tvOS (а не библиотек iOS) и что они также содержат сведения о bitcode.You will need to make sure that any third party static (.a) libraries you're using were built against tvOS libraries (not iOS libraries) and that they also includes bitcode information.

Для приложений или библиотек, которые включают допустимый size bitcode, значение будет больше единицы.For apps or libraries that include valid bitcode the size will be greater than one. В некоторых ситуациях, когда библиотека может иметь маркер bitcode, но не содержит допустимого bitcode.There are some situations where a library can have the bitcode marker, yet not contain valid bitcode. Например:For example:

Недопустимый BitcodeInvalid Bitcode

 $ otool -arch arm64 libLibrary.a | grep __bitcode -A 3
   sect name __bitcode
   segname __LLVM
      add 0x0000000000000670
      size 0x0000000000000001

Допустимый BitcodeValid Bitcode

$ otool -l -arch arm64 libDownloadableAgent-tvos.a |grep __bitcode -A 3
   sectname __bitcode
   segname __LLVM
      addr 0x000000000001d2d0
      size 0x0000000000045440

Обратите внимание на size разницу между двумя библиотеками в приведенном выше примере выполнения.Note the difference in size between the two libraries in the listed example runs above. Библиотека должна быть создана из Xcode архивной сборки с включенным параметром ENABLE_BITCODEbitcode (Xcode) в качестве решения для этой проблемы размера.The library must be generated from a Xcode archive build with bitcode enabled (Xcode setting ENABLE_BITCODE) as a solution to this size problem.

В приложениях, содержащих только срез arm64, должно быть значение "arm64" в списке Уирекуиреддевицекапабилитиес в info. plistApps that only contain the arm64 slice must also have “arm64” in the list of UIRequiredDeviceCapabilities in Info.plist

При отправке приложения в магазин приложений Apple TV для публикации может появиться сообщение об ошибке в форме:When submitting an app to the Apple TV App Store for publication, you might get an error in the form:

"Приложения, которые содержат только срез arm64, также должны иметь" arm64 "в списке Уирекуиреддевицекапабилитиес в info. plist"."Apps that only contain the arm64 slice must also have “arm64” in the list of UIRequiredDeviceCapabilities in Info.plist"

В этом случае измените Info.plist файл и убедитесь, что он имеет следующие ключи:If this occurs, edit your Info.plist file and ensure that it has the following keys:

<key>UIRequiredDeviceCapabilities</key>
<array>
  <string>arm64</string>
</array>

Перекомпилируйте приложение для выпуска и повторно отправьте его в iTunes Connect.Recompile your app for release and resubmit to iTunes Connect.

Выполнение задачи "MTouch"--сбойTask "MTouch" execution -- FAILED

Если вы используете библиотеку стороннего производителя (например, в виде «долгих игр») и при компиляции выпуска произошел сбой с длинной серией Task "MTouch" execution -- FAILEDсообщений об ошибках, которые заканчиваются, попробуйте добавить -gcc_flags="-framework OpenAL" Дополнительные аргументы касания:If you are using a 3rd party library (such as MonoGame) and your release compile failed with a long series of error messages ending in Task "MTouch" execution -- FAILED, try adding -gcc_flags="-framework OpenAL" to your Additional touch arguments:

Кроме того, необходимо --bitcode=asmonly включить в Дополнительные аргументы касания, задать для параметров компоновщика значение связать все и выполнить чистую компиляцию.You should also include --bitcode=asmonly in the Additional touch arguments, have your linker options set to Link All and do a clean compile.

ИТМС — ошибка 90471.ITMS-90471 error. Крупный значок отсутствуетThe Large icon is missing

При получении сообщения в формате "ИТМС-90471 ошибка".If you get a message in the form "ITMS-90471 error. Крупный значок отсутствует "при попытке отправить приложение Xamarin. tvOS в магазин приложений Apple TV для выпуска, проверьте следующее:The Large icon is missing" while attempting to submit a Xamarin.tvOS app to the Apple TV App Store for release, please check the following:

  1. Убедитесь, что вы включили крупные ресурсы значков в Assets.car файл, созданный в документации по значкам приложений .Ensure that you have included the Large Icon assets in your Assets.car file that you created using the App Icons documentation.
  2. Убедитесь, что Assets.car файл включен из документации по работе с значками и изображениями в конечном пакете приложений.Ensure that you included the Assets.car file from the Working with Icons and Images documentation in your final application bundle.

Недопустимый пакет — приложение, которое поддерживает игровые контроллеры, должно также поддерживать удаленное устройство Apple TV.Invalid bundle – An app that supports game controllers must also support the Apple TV remote

или диспетчер конфигурации службor

Недопустимый пакет — приложения Apple TV с платформой Гамеконтроллер должны содержать ключ Гксуппортедгамеконтроллерс в файле info. plist приложения.Invalid bundle – Apple TV apps with the GameController framework must include the GCSupportedGameControllers key in the app’s Info.plist

Игровые контроллеры можно использовать для улучшения игрового процесса и предоставления смысла в игре.Game Controllers can be used to enhance gameplay and provide a sense of immersion in a game. Они также могут использоваться для управления стандартным интерфейсом Apple TV, поэтому пользователю не нужно переключаться между удаленным и контроллером.They can also be used to control the standard Apple TV interface so the user doesn't have to switch between the remote and the controller.

Если вы отправляете приложение Xamarin. tvOS с поддержкой игровых контроллеров в магазин приложений Apple TV и получаете сообщение об ошибке в виде:If you are submitting a Xamarin.tvOS app with Game Controller support to the Apple TV App store and you are getting an error message in the form of:

Обнаружена одна или несколько проблем с последней доставкой "имя приложения". Ваша доставка прошла успешно, но при следующей доставке может потребоваться устранить следующие проблемы:We have discovered one or more issues with your recent delivery for “app name”. Your delivery was successful, but you may wish to correct the following issues in your next delivery:

Недопустимый пакет — приложение, которое поддерживает игровые контроллеры, также должно поддерживать удаленное устройство Apple TV.Invalid bundle – An app that supports game controllers must also support the Apple TV remote.

или диспетчер конфигурации службor

Недопустимый пакет — приложения Apple TV с платформой Гамеконтроллер должны содержать ключ Гксуппортедгамеконтроллерс в файле info. plist приложения.Invalid bundle – Apple TV apps with the GameController framework must include the GCSupportedGameControllers key in the app’s Info.plist.

Решение заключается в добавлении поддержки Siri Remote (GCMicroGamepad) в Info.plist файл приложения.The solution is to add support for the Siri Remote (GCMicroGamepad) to your app's Info.plist file. Профиль контроллера Micro Game был добавлен компанией Apple для целевого объекта Siri Remote.The Micro Game Controller profile has been added by Apple to target the Siri Remote. Например, включите следующие ключи:For example, include the following keys:

<key>GCSupportedGameControllers</key>  
  <array>  
    <dict>  
      <key>ProfileName</key>  
      <string>ExtendedGamepad</string>  
    </dict>  
    <dict>  
      <key>ProfileName</key>  
      <string>MicroGamepad</string>  
    </dict>  
  </array>  
<key>GCSupportsControllerUserInteraction</key>  
<true/>

Важно!

Игровые контроллеры Bluetooth — это необязательная покупка, которую могут выполнять пользователи. приложение не может заставить пользователя приобретать его.Bluetooth Game Controllers are an optional purchase that end users might make, your app cannot force the user to purchase one. Если приложение поддерживает игровые контроллеры, оно также должно поддерживать Siri Remote, чтобы играть можно было использовать для всех пользователей Apple TV.If your app supports Game Controllers it must also support the Siri Remote so that the game is useable by all Apple TV users.

Дополнительные сведения см. в разделе Working with Game Controllers статьи Siri Remote and Bluetooth Controllers Documentation.For more information, please see our Working with Game Controllers section of our Siri Remote and Bluetooth Controllers documentation.

Несовместимая Целевая платформа:. Нетпортабле, версия = v 4.5, профиль = Profile78Incompatible target framework: .NetPortable, Version=v4.5, Profile=Profile78

При попытке включить в проект Xamarin. tvOS переносимую библиотеку классов (PCL) может появиться сообщение в формате:When trying to include a Portable Class Library (PCL) into a Xamarin.tvOS project you might get a message in to form:

Несовместимая Целевая платформа:. Нетпортабле, версия = v 4.5, профиль = Profile78Incompatible target framework: .NetPortable, Version=v4.5, Profile=Profile78

Чтобы решить эту проблему, добавьте XML-файл с Xamarin.TVOS.xml именем со следующим содержимым:To solve this issue, add an XML file called Xamarin.TVOS.xml with the following content:

<Framework Identifier="Xamarin.TVOS" MinimumVersion="1.0" Profile="*" DisplayName="Xamarin.TVOS"/>

По следующему пути:To the following path:

/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/xbuild-frameworks/.NETPortable/v4.5/Profile/Profile259/SupportedFrameworks/

Обратите внимание, что номер профиля в пути должен совпадать с номером профиля PCL.Note that the profile number in the path must match the profile number of the PCL.

Заполнив этот файл, вы сможете успешно добавить файл PCL в проект Xamarin. tvOS.With this file in place, you should be able to successfully add the PCL file to the Xamarin.tvOS project.