Problembehandlung bei tvOS-Apps, die mit Xamarin erstellt wurden
In diesem Artikel werden Probleme behandelt, die beim Arbeiten mit der tvOS-Unterstützung von Xamarin auftreten können.
Bekannte Probleme
Die aktuelle Version der tvOS-Unterstützung von Xamarin hat die folgenden bekannten Probleme:
- Mono Framework – Mono 4.3 Cryptography.ProtectedData kann Daten aus Mono 4.2 nicht entschlüsseln. Daher können NuGet-Pakete nicht wiederhergestellt
Data unprotection failed
werden, wenn eine geschützte NuGet-Quelle konfiguriert ist.- Problemumgehung : In Visual Studio für Mac müssen Sie alle NuGet-Paketquellen hinzufügen, die die Kennwortauthentifizierung verwenden, bevor Sie erneut versuchen, die Pakete wiederherzustellen.
- Visual Studio für Mac w/F#-Add-In – Fehler beim Erstellen einer F#-Android-Vorlage unter Windows. Dies sollte auf dem Mac weiterhin ordnungsgemäß funktionieren.
- Xamarin.Mac – Beim Ausführen des einheitlichen Vorlagenprojekts "Xamarin.Mac" mit dem Zielframework wird
Unsupported
das PopupCould not connect to the debugger
möglicherweise angezeigt.- Mögliche Problemumgehung – Downgrade der Mono-Framework-Version, die in unserem Stable-Kanal verfügbar ist.
- Xamarin Visual Studio & Xamarin.iOS – Beim Bereitstellen von WatchKit-Anwendungen in Visual Studio kann der Fehler
The file ‘bin\iPhoneSimulator\Debug\WatchKitApp1WatchKitApp.app\WatchKitApp1WatchKitApp’ does not exist
auftreten.
Melden Sie alle Fehler, die Sie auf GitHub finden.
Problembehandlung
In den folgenden Abschnitten werden einige bekannte Probleme aufgeführt, die bei verwendung von tvOS 9 mit Xamarin.tvOS und der Lösung für diese Probleme auftreten können:
Ungültige ausführbare Datei – Die ausführbare Datei enthält keinen Bitcode.
Beim Versuch, eine Xamarin.tvOS-App an den Apple TV App Store zu übermitteln, wird möglicherweise eine Fehlermeldung in der Form "Ungültige ausführbare Datei – Die ausführbare Datei enthält keinen Bitcode".
Gehen Sie wie folgt vor, um dieses Problem zu beheben:
Klicken Sie in Visual Studio für Mac im Projektmappen-Explorer mit der rechten Maustaste auf Ihre Xamarin.tvOS-Projektdatei, und wählen Sie "Optionen" aus.
Wählen Sie tvOS Build aus, und stellen Sie sicher, dass Sie sich in der Release-Konfiguration befinden:
Fügen Sie das Feld "Zusätzliche
--bitcode=asmonly
mtouch"-Argumente hinzu, und klicken Sie auf die Schaltfläche "OK".Erstellen Sie Ihre App in der Release-Konfiguration neu.
Überprüfen, ob Ihre tvOS-App Bitcode enthält
Um zu überprüfen, ob Ihr Xamarin.tvOS-App-Build Bitcode enthält, öffnen Sie die Terminal-App, und geben Sie Folgendes ein:
otool -l /path/to/your/tv.app/tv
Suchen Sie in der Ausgabe folgendes:
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
und size
werden anders sein, aber andere Felder sollten identisch sein.
Sie müssen sicherstellen, dass statische (.a
) Bibliotheken von Drittanbietern, die Sie verwenden, für tvOS-Bibliotheken (nicht iOS-Bibliotheken) erstellt wurden und dass sie auch Bitcodeinformationen enthalten.
Bei Apps oder Bibliotheken, die einen gültigen Bitcode enthalten, ist der size
Wert größer als eins. Es gibt einige Situationen, in denen eine Bibliothek die Bitcodemarkierung aufweisen kann, aber keine gültige Bitcode enthalten kann. Zum Beispiel:
Ungültiger Bitcode
$ otool -arch arm64 libLibrary.a | grep __bitcode -A 3
sect name __bitcode
segname __LLVM
add 0x0000000000000670
size 0x0000000000000001
Gültiger Bitcode
$ otool -l -arch arm64 libDownloadableAgent-tvos.a |grep __bitcode -A 3
sectname __bitcode
segname __LLVM
addr 0x000000000001d2d0
size 0x0000000000045440
Beachten Sie den Unterschied size
zwischen den beiden Bibliotheken im aufgeführten Beispiel oben. Die Bibliothek muss aus einem Xcode-Archivbuild mit aktiviertem Bitcode (Xcode-Einstellung ENABLE_BITCODE
) als Lösung für dieses Größenproblem generiert werden.
Apps, die nur das Arm64-Segment enthalten, müssen auch "arm64" in der Liste der UIRequiredDeviceCapabilities in Info.plist haben.
Wenn Sie eine App für die Veröffentlichung an den Apple TV App Store übermitteln, wird möglicherweise ein Fehler im Formular angezeigt:
"Apps, die nur das Arm64-Segment enthalten, müssen auch "arm64" in der Liste der UIRequiredDeviceCapabilities in Info.plist haben"
Bearbeiten Sie in diesem Fall Ihre Info.plist
Datei, und stellen Sie sicher, dass sie über die folgenden Schlüssel verfügt:
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
Kompilieren Sie Ihre App für die Veröffentlichung, und übermitteln Sie sie erneut an iTunes Verbinden.
Ausführung der Aufgabe "MTouch" – FEHLGESCHLAGEN
Wenn Sie eine Drittanbieterbibliothek (z. B. MonoGame) verwenden und die Veröffentlichungskompilierung mit einer langen Reihe von Fehlermeldungen fehlgeschlagen ist, die auf Task "MTouch" execution -- FAILED
"Zusätzliche Touchargumente" enden, versuchen Sie, die zusätzlichen Touchargumente hinzuzufügen-gcc_flags="-framework OpenAL"
:
Sie sollten auch die Zusätzlichen Fingereingabeargumente einbeziehen--bitcode=asmonly
, die Linkeroptionen auf "Alle verknüpfen" festgelegt haben und eine sauber Kompilierung ausführen.
ITMS-90471-Fehler. Das Symbol "Groß" fehlt.
Wenn eine Meldung im Formular "ITMS-90471-Fehler" angezeigt wird. Das Große Symbol fehlt" beim Versuch, eine Xamarin.tvOS-App zur Veröffentlichung an den Apple TV App Store zu übermitteln, überprüfen Sie bitte Folgendes:
- Stellen Sie sicher, dass Sie die Ressourcen für große Symbole in Ihre
Assets.car
Datei aufgenommen haben, die Sie mithilfe der Dokumentation zu App-Symbolen erstellt haben. - Stellen Sie sicher, dass Sie die
Assets.car
Datei aus der Dokumentation "Arbeiten mit Symbolen und Bildern " in Ihr endgültiges Anwendungspaket aufgenommen haben.
Ungültiges Bündel – Eine App, die Gamecontroller unterstützt, muss auch die Apple TV-Fernbedienung unterstützen.
oder
Ungültiges Bündel – Apple TV-Apps mit dem GameController-Framework müssen den GCSupportedGameControllers-Schlüssel in der Info.plist der App enthalten.
Gamecontroller können verwendet werden, um das Gameplay zu verbessern und ein Gefühl der Immersion in einem Spiel zu bieten. Sie können auch verwendet werden, um die standardmäßige Apple TV-Schnittstelle zu steuern, damit der Benutzer nicht zwischen der Fernbedienung und dem Controller wechseln muss.
Wenn Sie eine Xamarin.tvOS-App mit GameController-Unterstützung an den Apple TV App Store übermitteln und eine Fehlermeldung in Form von:
Wir haben ein oder mehrere Probleme mit Ihrer letzten Übermittlung für "App-Name" festgestellt. Ihre Lieferung war erfolgreich, aber Sie können die folgenden Probleme in Ihrer nächsten Lieferung beheben:
Ungültiges Bündel – Eine App, die Gamecontroller unterstützt, muss auch die Apple TV-Fernbedienung unterstützen.
oder
Ungültiges Bündel – Apple TV-Apps mit dem GameController-Framework müssen den GCSupportedGameControllers-Schlüssel in der Info.plist der App enthalten.
Die Lösung besteht darin, der Datei Ihrer App Info.plist
Unterstützung für die Siri Remote (GCMicroGamepad
) hinzuzufügen. Das Micro Game Controller-Profil wurde von Apple hinzugefügt, um auf die Siri Remote zu abzielen. Schließen Sie beispielsweise die folgenden Schlüssel ein:
<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/>
Wichtig
Bluetooth-Gamecontroller sind ein optionaler Kauf, den Endbenutzer möglicherweise tätigen, ihre App kann den Benutzer nicht zwingen, eines zu kaufen. Wenn Ihre App GameController unterstützt, muss sie auch die Siri Remote unterstützen, damit das Spiel von allen Apple TV-Benutzern verwendet werden kann.
Weitere Informationen finden Sie im Abschnitt "Arbeiten mit Gamecontrollern " unserer Dokumentation zu Siri Remote- und Bluetooth-Controllern .
Inkompatibles Zielframework: . NetPortable, Version=v4.5, Profile=Profile78
Wenn Sie versuchen, eine portable Klassenbibliothek (PORTABLE Class Library, PCL) in ein Xamarin.tvOS-Projekt einzuschließen, erhalten Sie möglicherweise eine Nachricht in form:
Inkompatibles Zielframework: . NetPortable, Version=v4.5, Profile=Profile78
Um dieses Problem zu beheben, fügen Sie eine XML-Datei hinzu, die mit dem folgenden Inhalt aufgerufen wird Xamarin.TVOS.xml
:
<Framework Identifier="Xamarin.TVOS" MinimumVersion="1.0" Profile="*" DisplayName="Xamarin.TVOS"/>
Zum folgenden Pfad:
/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/xbuild-frameworks/.NETPortable/v4.5/Profile/Profile259/SupportedFrameworks/
Beachten Sie, dass die Profilnummer im Pfad mit der Profilnummer der PCL übereinstimmen muss.
Mit dieser Datei sollten Sie in der Lage sein, die PCL-Datei erfolgreich zum Xamarin.tvOS-Projekt hinzuzufügen.