Устранение неполадок приложений tvOS, созданных с помощью Xamarin
В этой статье рассматриваются проблемы, которые могут возникнуть при работе с поддержкой tvOS Xamarin.
Известные проблемы
Текущий выпуск поддержки tvOS Xamarin имеет следующие известные проблемы:
- Mono Framework — Mono 4.3 Cryptography.ProtectedData не может расшифровать данные из Mono 4.2. В результате пакеты NuGet не смогут восстановиться с ошибкой
Data unprotection failed
при настройке защищенного источника NuGet.- Решение. В Visual Studio для Mac необходимо добавить все источники пакетов NuGet, использующие проверку подлинности паролей, прежде чем повторно пытаться восстановить пакеты.
- Visual Studio для Mac надстройка W/F# — ошибка при создании шаблона F# Android в Windows. Это по-прежнему должно работать правильно в Mac.
- Xamarin.Mac — при запуске унифицированного проекта шаблона Xamarin.Mac с целевым набором
Unsupported
платформы может появиться всплывающее окноCould not connect to the debugger
.- Потенциальное решение — понижение версии платформы Mono, доступной в нашем канале Stable.
- Xamarin Visual Studio и Xamarin.iOS — при развертывании приложений WatchKit в Visual Studio может появиться ошибка
The file ‘bin\iPhoneSimulator\Debug\WatchKitApp1WatchKitApp.app\WatchKitApp1WatchKitApp’ does not exist
.
Сообщите о любых ошибках, обнаруженных на сайте GitHub.
Устранение неполадок
В следующих разделах перечислены некоторые известные проблемы, которые могут возникнуть при использовании tvOS 9 с Xamarin.tvOS и решением этих проблем:
Недопустимый исполняемый файл— исполняемый файл не содержит бит-код
При попытке отправить приложение Xamarin.tvOS в Apple TV App Store может появиться сообщение об ошибке в форме "Недопустимый исполняемый файл — исполняемый файл не содержит бит-код".
Чтобы устранить эту проблему, сделайте следующее:
В Visual Studio для Mac щелкните правой кнопкой мыши файл проекта Xamarin.tvOS в Обозреватель решений и выберите пункт "Параметры".
Выберите сборкуtvOS и убедитесь, что вы находитесь в конфигурации выпуска :
Добавьте
--bitcode=asmonly
в поле "Дополнительные аргументы mtouch" и нажмите кнопку "ОК ".Перестройте приложение в конфигурации выпуска .
Проверка того, содержит ли ваше приложение tvOS Биткод
Чтобы убедиться, что сборка приложения Xamarin.tvOS содержит Bitcode, откройте приложение терминала и введите следующее:
otool -l /path/to/your/tv.app/tv
В выходных данных найдите следующее:
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
будет отличаться, но другие поля должны быть идентичными.
Необходимо убедиться, что все сторонние статические.a
() библиотеки, которые вы используете, были созданы для библиотек tvOS (а не библиотек iOS) и что они также содержат сведения о бит-коде.
Для приложений или библиотек, включающих допустимый битовый код, size
будет больше одного. Существуют некоторые ситуации, когда библиотека может иметь маркер битового кода, но не содержит допустимый бит-код. Например:
Недопустимый биткод
$ otool -arch arm64 libLibrary.a | grep __bitcode -A 3
sect name __bitcode
segname __LLVM
add 0x0000000000000670
size 0x0000000000000001
Допустимый бит-код
$ otool -l -arch arm64 libDownloadableAgent-tvos.a |grep __bitcode -A 3
sectname __bitcode
segname __LLVM
addr 0x000000000001d2d0
size 0x0000000000045440
Обратите внимание на разницу между size
двумя библиотеками в приведенном выше примере. Библиотека должна быть создана из сборки архива Xcode с включенным биткодом (параметр ENABLE_BITCODE
Xcode) в качестве решения этой проблемы размера.
Приложения, содержащие только срез arm64, также должны иметь "arm64" в списке UIRequiredDeviceCapabilities в Info.plist
При отправке приложения в Apple TV App Store для публикации может появиться сообщение об ошибке в форме:
"Приложения, содержащие только срез arm64, также должны иметь arm64 в списке UIRequiredDeviceCapabilities в Info.plist".
В этом случае измените Info.plist
файл и убедитесь, что он имеет следующие ключи:
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
Перекомпилируйте приложение для выпуска и повторной отправки в iTunes Подключение.
Выполнение задачи "MTouch" — СБОЙ
Если вы используете 3-ю стороннюю библиотеку (например, MonoGame), а компиляция выпуска завершилась сбоем с длинным рядом сообщений об ошибках, завершающихся Task "MTouch" execution -- FAILED
, попробуйте добавить -gcc_flags="-framework OpenAL"
к дополнительным сенсорным аргументам:
Вы также должны включить --bitcode=asmonly
в дополнительные сенсорные аргументы, задать параметры компоновщика значение Link All и выполнить чистую компиляцию.
Ошибка ITMS-90471. Отсутствует значок "Большой"
Если вы получите сообщение в форме "ОШИБКА ITMS-90471". Значок "Большой отсутствует", пытаясь отправить приложение Xamarin.tvOS в Apple TV App Store для выпуска, проверка следующее:
- Убедитесь, что вы включили ресурсы больших значков в
Assets.car
файл, созданный с помощью документации по значкам приложений. - Убедитесь, что вы включили
Assets.car
файл из документации по работе с значками и изображениями в окончательном пакете приложений.
Недопустимый пакет — приложение, поддерживающее игровые контроллеры, также должно поддерживать удаленный компьютер Apple TV
or
Недопустимый пакет— приложения Apple TV с платформой GameController должны включать ключ GCSupportedGameControllers в info.plist приложения
Игровые контроллеры можно использовать для улучшения игрового процесса и обеспечения чувства погружения в игру. Они также могут использоваться для управления стандартным интерфейсом Apple TV, поэтому пользователю не нужно переключаться между удаленным и контроллером.
Если вы отправляете приложение Xamarin.tvOS с поддержкой game Controller в Магазин приложений Apple TV, и вы получаете сообщение об ошибке в виде:
Мы обнаружили одну или несколько проблем с вашей последней доставкой для имени приложения. Ваша доставка была успешной, но вы можете исправить следующие проблемы в следующей доставке:
Недопустимый пакет — приложение, поддерживающее игровые контроллеры, также должно поддерживать удаленный компьютер Apple TV.
or
Недопустимый пакет — приложения Apple TV с платформой GameController должны включать ключ GCSupportedGameControllers в info.plist приложения.
Решение заключается в добавлении поддержки удаленного доступа Siri (GCMicroGamepad
) к файлу приложения Info.plist
. Профиль micro Game Controller был добавлен Apple для назначения Siri Remote. Например, включите следующие ключи:
<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 являются необязательным приобретением, которое могут сделать конечные пользователи, ваше приложение не может принудительно приобрести его. Если приложение поддерживает игровые контроллеры, оно также должно поддерживать Siri Remote, чтобы игра была использоваться всеми пользователями Apple TV.
Дополнительные сведения см. в разделе "Работа с игровыми контроллерами" в документации по удаленным и bluetooth-контроллерам Siri.
Несовместимая целевая платформа: NetPortable, Version=v4.5, Profile=Profile78
При попытке включить переносимую библиотеку классов (PCL) в проект Xamarin.tvOS можно получить сообщение в форме:
Несовместимая целевая платформа: NetPortable, Version=v4.5, Profile=Profile78
Чтобы устранить эту проблему, добавьте XML-файл, вызываемый Xamarin.TVOS.xml
следующим содержимым:
<Framework Identifier="Xamarin.TVOS" MinimumVersion="1.0" Profile="*" DisplayName="Xamarin.TVOS"/>
Для следующего пути:
/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/xbuild-frameworks/.NETPortable/v4.5/Profile/Profile259/SupportedFrameworks/
Обратите внимание, что номер профиля в пути должен соответствовать номеру профиля PCL.
С помощью этого файла вы сможете успешно добавить PCL-файл в проект Xamarin.tvOS.