Устранение неполадок приложения 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

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

  • Платформа Mono — Mono 4.3 Cryptography.ProtectedData не сможет расшифровать данные с версии 4.2 Mono.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 с 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, выполнив target Framework присвоено 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 App Store, может появиться сообщение об ошибке в форме «Недопустимый исполняемый файл — исполняемый файл не содержит 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.

Проверьте, что приложение содержит Bitcode tvOSVerifying 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.

Для приложений или библиотек, которые включают допустимые bitcode size будет больше единицы.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 с поддержкой bitcode (параметр Xcode ENABLE_BITCODE) в качестве решения этой проблемы размер.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» в список UIRequiredDeviceCapabilities в файле Info.plist.Apps that only contain the arm64 slice must also have “arm64” in the list of UIRequiredDeviceCapabilities in Info.plist

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

«Приложения, которые содержат только срез arm64 также должны содержать «arm64» в списке UIRequiredDeviceCapabilities в файле 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

Если используется библиотека стороннего производителя (например, MonoGame) и сбой компиляции вашего выпуска с серию сообщения об ошибках, заканчивающиеся на 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.

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

Если вы получите сообщение в виде «ITMS 90471 ошибка.If you get a message in the form "ITMS-90471 error. Крупный значок отсутствует» при попытке отправить на Xamarin.tvOS приложение для Apple TV App Store для выпуска, выполните следующие действия: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 TVInvalid bundle – An app that supports game controllers must also support the Apple TV remote

илиor

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

Решением является добавление поддержки для удаленного Siri (GCMicroGamepad) в приложение Info.plist файл.The solution is to add support for the Siri Remote (GCMicroGamepad) to your app's Info.plist file. Профиль контроллера Micro игру было добавлено компанией 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 таким образом, игра готовый к применению всеми пользователями 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.

Дополнительные сведения см. в разделе наших работа с игровые части нашей контроллеры Siri Remote и контроллеры Bluetooth документации.For more information, please see our Working with Game Controllers section of our Siri Remote and Bluetooth Controllers documentation.

Несовместимая целевая платформа:. NetPortable, Version = версии 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:

Несовместимая целевая платформа:. NetPortable, Version = версии 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.

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