Résolution des problèmes liés aux applications tvOS créées avec Xamarin
Cet article décrit les problèmes que vous pouvez rencontrer lors de l’utilisation de la prise en charge tvOS de Xamarin.
Problèmes connus
La version actuelle de la prise en charge tvOS de Xamarin présente les problèmes connus suivants :
- Mono Framework : Mono 4.3 Cryptography.ProtectedData ne parvient pas à déchiffrer les données de Mono 4.2. Par conséquent, les packages NuGet ne peuvent pas être restaurés avec l’erreur
Data unprotection failed
lorsqu’une source NuGet protégée est configurée.- Solution de contournement : dans Visual Studio pour Mac vous devez ajouter des sources de package NuGet qui utilisent l’authentification par mot de passe avant de réessayer de restaurer les packages.
- Visual Studio pour Mac complément w/ F# : erreur lors de la création d’un modèle Android F# sur Windows. Cela doit toujours fonctionner correctement sur Mac.
- Xamarin.Mac : lors de l’exécution du projet de modèle unifié Xamarin.Mac avec l’infrastructure cible définie
Unsupported
sur , la fenêtre contextuelleCould not connect to the debugger
peut apparaître.- Solution de contournement potentielle : rétrogradez la version du framework Mono disponible dans notre canal stable.
- Xamarin Visual Studio & Xamarin.iOS : lors du déploiement d’applications WatchKit dans Visual Studio, l’erreur
The file ‘bin\iPhoneSimulator\Debug\WatchKitApp1WatchKitApp.app\WatchKitApp1WatchKitApp’ does not exist
peut apparaître.
Signalez les bogues que vous trouvez sur GitHub.
Dépannage
Les sections suivantes répertorient certains problèmes connus qui peuvent se produire lors de l’utilisation de tvOS 9 avec Xamarin.tvOS et la solution à ces problèmes :
Exécutable non valide : l’exécutable ne contient pas de code binaire
Lorsque vous tentez d’envoyer une application Xamarin.tvOS à l’App Store Apple TV, vous pouvez recevoir un message d’erreur sous la forme « Exécutable non valide - L’exécutable ne contient pas de code binaire ».
Pour résoudre ce problème, procédez comme suit :
Dans Visual Studio pour Mac, cliquez avec le bouton droit sur votre fichier projet Xamarin.tvOS dans le Explorateur de solutions, puis sélectionnez Options.
Sélectionnez tvOS Build et vérifiez que vous êtes sur la configuration release :
Ajoutez
--bitcode=asmonly
au champ d’arguments mtouch supplémentaires, puis cliquez sur le bouton OK.Régénérez votre application dans la configuration Release .
Vérification que votre application tvOS contient du code binaire
Pour vérifier que votre build d’application Xamarin.tvOS contient bitcode, ouvrez l’application Terminal et entrez les éléments suivants :
otool -l /path/to/your/tv.app/tv
Dans la sortie, recherchez les éléments suivants :
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
et size
sera différent, mais d’autres champs doivent être identiques.
Vous devez vous assurer que toutes les bibliothèques statiques.a
tierces que vous utilisez ont été créées sur des bibliothèques tvOS (et non des bibliothèques iOS) et qu’elles incluent également des informations de code binaire.
Pour les applications ou bibliothèques qui incluent le code binaire valide, le size
sera supérieur à un. Il existe certaines situations où une bibliothèque peut avoir le marqueur de code binaire, mais qui ne contient pas encore de code binaire valide. Par exemple :
Code binaire non valide
$ otool -arch arm64 libLibrary.a | grep __bitcode -A 3
sect name __bitcode
segname __LLVM
add 0x0000000000000670
size 0x0000000000000001
Code binaire valide
$ otool -l -arch arm64 libDownloadableAgent-tvos.a |grep __bitcode -A 3
sectname __bitcode
segname __LLVM
addr 0x000000000001d2d0
size 0x0000000000045440
Notez la différence size
entre les deux bibliothèques de l’exemple répertorié ci-dessus. La bibliothèque doit être générée à partir d’une build d’archive Xcode avec le code binaire activé (paramètre ENABLE_BITCODE
Xcode) comme solution à ce problème de taille.
Les applications qui contiennent uniquement la tranche arm64 doivent également avoir « arm64 » dans la liste d’UIRequiredDeviceCapabilities dans Info.plist
Lors de l’envoi d’une application à l’App Store Apple TV pour publication, vous pouvez obtenir une erreur dans le formulaire :
« Les applications qui contiennent uniquement la tranche arm64 doivent également avoir « arm64 » dans la liste d’UIRequiredDeviceCapabilities dans Info.plist .
Si cela se produit, modifiez votre Info.plist
fichier et vérifiez qu’il possède les clés suivantes :
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
Recompilez votre application à des fins de publication et de soumission à iTunes Connecter.
Exécution de la tâche « MTouch » -- Échec
Si vous utilisez une bibliothèque tierce (par exemple, MonoGame) et que votre compilation de mise en production a échoué avec une longue série de messages d’erreur se terminant par Task "MTouch" execution -- FAILED
, essayez d’ajouter -gcc_flags="-framework OpenAL"
à vos arguments tactiles supplémentaires :
Vous devez également inclure --bitcode=asmonly
dans les arguments tactiles supplémentaires, avoir les options de l’éditeur de liens définies sur Link All et effectuer une compilation propre.
Erreur ITMS-90471. L’icône Grande est manquante
Si vous recevez un message sous la forme « Erreur ITMS-90471. L’icône Grande est manquante » lors de la tentative d’envoi d’une application Xamarin.tvOS à l’App Store Apple TV pour la publication, veuillez case activée les éléments suivants :
- Vérifiez que vous avez inclus les ressources d’icône volumineuses dans votre
Assets.car
fichier que vous avez créé à l’aide de la documentation Icônes d’application. - Vérifiez que vous avez inclus le
Assets.car
fichier à partir de la documentation Working with Icon and Images dans votre offre groupée d’applications finale.
Offre groupée non valide : une application qui prend en charge les contrôleurs de jeu doit également prendre en charge la télécommande Apple TV
or
Offre groupée non valide : les applications Apple TV avec l’infrastructure GameController doivent inclure la clé GCSupportedGameControllers dans info.plist de l’application.
Les contrôleurs de jeu peuvent être utilisés pour améliorer le jeu et fournir un sentiment d’immersion dans un jeu. Ils peuvent également être utilisés pour contrôler l’interface Apple TV standard afin que l’utilisateur n’ait pas à basculer entre la télécommande et le contrôleur.
Si vous envoyez une application Xamarin.tvOS avec prise en charge du contrôleur de jeu dans l’Apple TV App Store et que vous recevez un message d’erreur sous la forme suivante :
Nous avons découvert un ou plusieurs problèmes liés à votre remise récente pour « nom de l’application ». Votre livraison a réussi, mais vous pouvez corriger les problèmes suivants dans votre prochaine livraison :
Offre groupée non valide : une application qui prend en charge les contrôleurs de jeu doit également prendre en charge la télécommande Apple TV.
or
Offre groupée non valide : les applications Apple TV avec l’infrastructure GameController doivent inclure la clé GCSupportedGameControllers dans info.plist de l’application.
La solution consiste à ajouter la prise en charge de Siri Remote (GCMicroGamepad
) au fichier de Info.plist
votre application. Le profil Micro Game Controller a été ajouté par Apple pour cibler Siri Remote. Par exemple, incluez les clés suivantes :
<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/>
Important
Les contrôleurs de jeu Bluetooth sont un achat facultatif que les utilisateurs finaux peuvent effectuer, votre application ne peut pas forcer l’utilisateur à en acheter un. Si votre application prend en charge les contrôleurs de jeu, elle doit également prendre en charge Siri Remote afin que le jeu soit utilisable par tous les utilisateurs Apple TV.
Pour plus d’informations, consultez la section Utilisation des contrôleurs de jeu de notre documentation Sur les contrôleurs Siri Remote et Bluetooth.
Infrastructure cible incompatible : . NetPortable, Version=v4.5, Profile=Profile78
Lorsque vous essayez d’inclure une bibliothèque de classes portable (PCL) dans un projet Xamarin.tvOS, vous pouvez recevoir un message sous forme :
Infrastructure cible incompatible : . NetPortable, Version=v4.5, Profile=Profile78
Pour résoudre ce problème, ajoutez un fichier XML appelé Xamarin.TVOS.xml
avec le contenu suivant :
<Framework Identifier="Xamarin.TVOS" MinimumVersion="1.0" Profile="*" DisplayName="Xamarin.TVOS"/>
Pour le chemin d’accès suivant :
/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/xbuild-frameworks/.NETPortable/v4.5/Profile/Profile259/SupportedFrameworks/
Notez que le numéro de profil dans le chemin doit correspondre au numéro de profil du PCL.
Avec ce fichier en place, vous devez être en mesure d’ajouter le fichier PCL au projet Xamarin.tvOS.