Řešení potíží s aplikacemi tvOS vytvořenými pomocí Xamarinu
Tento článek popisuje známé problémy, se kterými se můžete setkat při práci s podporou tvOSu Xamarinu.
Známé problémy
Aktuální verze podpory tvOSu Xamarinu má následující známé problémy:
- Mono Framework – Mono 4.3 Cryptography.ProtectedData nedokáže dešifrovat data z Mono 4.2. V důsledku toho se balíčky NuGet nepodaří obnovit s chybou
Data unprotection failed
při konfiguraci chráněného zdroje NuGet.- Alternativní řešení – V Visual Studio pro Mac budete muset před opětovným pokusem o obnovení balíčků přidat zpět všechny zdroje balíčků NuGet, které používají ověřování heslem.
- Visual Studio pro Mac doplňku f# – chyba při vytváření šablony F# pro Android ve Windows. To by stále mělo fungovat správně na Macu.
- Xamarin.Mac – Při spuštění projektu sjednocené šablony Xamarin.Mac s cílovou architekturou nastavenou na
Unsupported
, může se zobrazit automaticky otevírané oknoCould not connect to the debugger
.- Potenciální alternativní řešení – Downgrade verze mono frameworku dostupná v našem stabilním kanálu.
- Xamarin Visual Studio & Xamarin.iOS – Při nasazování aplikací WatchKit v sadě Visual Studio se může zobrazit chyba
The file ‘bin\iPhoneSimulator\Debug\WatchKitApp1WatchKitApp.app\WatchKitApp1WatchKitApp’ does not exist
.
Nahlaste všechny chyby, které najdete na GitHubu.
Řešení problému
Následující části obsahují některé známé problémy, ke kterým může dojít při použití tvOS 9 s Xamarin.tvOS a řešení těchto problémů:
Neplatný spustitelný soubor – Spustitelný soubor neobsahuje bitcode
Při pokusu o odeslání aplikace Xamarin.tvOS do Apple TV App Storu se může zobrazit chybová zpráva ve formátu Neplatný spustitelný soubor – spustitelný soubor neobsahuje bitcode.
Pokud chcete tento problém vyřešit, postupujte takto:
V Visual Studio pro Mac klikněte pravým tlačítkem na soubor projektu Xamarin.tvOS v Průzkumník řešení a vyberte Možnosti.
Vyberte tvOS Build a ujistěte se, že jste v konfiguraci vydané verze :
Přidejte
--bitcode=asmonly
do pole Další argumenty mtouch a klikněte na tlačítko OK .Znovu sestavte aplikaci v konfiguraci vydané verze .
Ověření, že vaše aplikace tvOS obsahuje bitcode
Pokud chcete ověřit, že sestavení aplikace Xamarin.tvOS obsahuje Bitcode, otevřete terminálovou aplikaci a zadejte následující:
otool -l /path/to/your/tv.app/tv
Ve výstupu vyhledejte následující:
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
a size
budou se lišit, ale jiná pole by měla být stejná.
Budete se muset ujistit, že všechny statické knihovny.a
třetích stran, které používáte, byly sestaveny proti knihovnám tvOS (ne knihovnám iOS) a že obsahují také informace o bitovém kódu.
U aplikací nebo knihoven, které obsahují platný bitový kód, size
bude větší než jeden. V některých situacích může knihovna obsahovat značku bitcode, ale neobsahuje platný bitcode. Příklad:
Neplatný bitový kód
$ otool -arch arm64 libLibrary.a | grep __bitcode -A 3
sect name __bitcode
segname __LLVM
add 0x0000000000000670
size 0x0000000000000001
Platný bitový kód
$ otool -l -arch arm64 libDownloadableAgent-tvos.a |grep __bitcode -A 3
sectname __bitcode
segname __LLVM
addr 0x000000000001d2d0
size 0x0000000000045440
Všimněte si rozdílu size
mezi dvěma knihovnami v uvedeném příkladu výše. Knihovna musí být vygenerována z sestavení archivu Xcode s povoleným bitcode (nastavení ENABLE_BITCODE
Xcode) jako řešení tohoto problému s velikostí.
Aplikace, které obsahují pouze řez arm64, musí mít v seznamu UIRequiredDeviceCapabilities v souboru Info.plist také "arm64".
Při odesílání aplikace do Apple TV App Storu pro publikování se může zobrazit chyba ve formuláři:
Aplikace, které obsahují pouze řez arm64, musí mít v seznamu UIRequiredDeviceCapabilities v souboru Info.plist také "arm64".
Pokud k tomu dojde, upravte soubor a ujistěte Info.plist
se, že obsahuje následující klíče:
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
Znovu zkompilujte aplikaci pro vydání a znovu ji odešlete do Připojení iTunes.
Spuštění úlohy "MTouch" --FAILED
Pokud používáte knihovnu třetí strany (například MonoGame) a kompilace vydané verze selhala s dlouhou řadou chybových zpráv, které končí Task "MTouch" execution -- FAILED
, zkuste přidat -gcc_flags="-framework OpenAL"
do argumentů Další dotykové ovládání:
Měli byste také zahrnout --bitcode=asmonly
do argumentů Další dotykové ovládání, mít možnosti linkeru nastavené na Propojit vše a provést čistou kompilaci.
Chyba ITMS-90471 Chybí ikona Velké.
Pokud se zobrazí zpráva ve formuláři "Chyba ITMS-90471". Při pokusu o odeslání aplikace Xamarin.tvOS do Apple TV App Storu pro vydání chybí ikona Velké. Zkontrolujte následující:
- Ujistěte se, že jste do souboru, který jste vytvořili, zahrnuli prostředky
Assets.car
velké ikony pomocí dokumentace ke ikonám aplikací. - Ujistěte se, že jste do finální sady aplikací zahrnuli
Assets.car
soubor z dokumentace Práce s ikonami a obrázky .
Neplatná sada – aplikace, která podporuje herní ovladače, musí také podporovat apple TV remote
nebo
Neplatná sada – aplikace Apple TV s architekturou GameController musí obsahovat klíč GCSupportedGameControllers v souboru Info.plist aplikace.
Herní řadiče lze použít k vylepšení hry a poskytnout smysl pro ponořování do hry. Dají se také použít k ovládání standardního rozhraní Apple TV, aby uživatel nemusel přepínat mezi vzdáleným zařízením a ovladačem.
Pokud odesíláte aplikaci Xamarin.tvOS s podporou herního ovladače do Obchodu s aplikacemi Apple TV a zobrazuje se vám chybová zpráva ve formě:
Zjistili jsme jeden nebo více problémů s vaším nedávným doručením názvu aplikace. Vaše doručení bylo úspěšné, ale možná budete chtít opravit následující problémy v dalším doručení:
Neplatná sada – aplikace, která podporuje herní ovladače, musí také podporovat apple TV remote.
nebo
Neplatná sada – aplikace Apple TV s architekturou GameController musí obsahovat klíč GCSupportedGameControllers v souboru Info.plist aplikace.
Řešením je přidat podporu pro Siri Remote (GCMicroGamepad
) do souboru vaší aplikace Info.plist
. Profil Micro Game Controller přidal Apple pro cílení na Siri Remote. Můžete například zahrnout následující klíče:
<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/>
Důležité
Herní ovladače Bluetooth jsou volitelný nákup, který by koncoví uživatelé mohli provést, vaše aplikace nemůže vynutit, aby si ho uživatel koupil. Pokud vaše aplikace podporuje herní řadiče, musí také podporovat Siri Remote, aby ji mohli používat všichni uživatelé Apple TV.
Další informace najdete v naší části Práce se herními ovladači v dokumentaci k siri remote a řadičům Bluetooth.
Nekompatibilní cílová architektura: . NetPortable, Version=v4.5, Profile=Profile78
Při pokusu o zahrnutí knihovny přenosných tříd (PCL) do projektu Xamarin.tvOS se může zobrazit zpráva ve formě:
Nekompatibilní cílová architektura: . NetPortable, Version=v4.5, Profile=Profile78
Chcete-li tento problém vyřešit, přidejte soubor XML volaný Xamarin.TVOS.xml
s následujícím obsahem:
<Framework Identifier="Xamarin.TVOS" MinimumVersion="1.0" Profile="*" DisplayName="Xamarin.TVOS"/>
Do následující cesty:
/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/xbuild-frameworks/.NETPortable/v4.5/Profile/Profile259/SupportedFrameworks/
Všimněte si, že číslo profilu v cestě musí odpovídat číslu profilu PCL.
S tímto souborem byste měli být schopni úspěšně přidat soubor PCL do projektu Xamarin.tvOS.