Řešení potíží s aplikacemi tvOS sestavené pomocí Xamarinu

Tento článek popisuje známé problémy, se kterými se můžete setkat při práci s podporou xamarinu pro tvOS.

Známé problémy

Aktuální verze podpory Xamarinu pro tvOS 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 NuGet balíčky nepodaří obnovit s chybou při konfiguraci chráněného Data unprotection failed NuGet zdrojového kódu.
    • Alternativní řešení – Visual Studio pro Mac budete muset před pokusem o obnovení balíčků NuGet přidat zpět všechny zdroje balíčků, které používají ověřování heslem.
  • Visual Studio pro Mac s doplňkem F# – Chyba při vytváření šablony F# pro Android na Windows. Na Macu by to stále mělo správně fungovat.
  • Xamarin.Mac – při spuštění projektu sjednocené šablony Xamarin.Mac s cílovou architekturou nastavenou na se může zobrazit automaticky Could not connect to the debugger otevírané okno.
    • Potenciální alternativní řešení – Downgrade verze architektury Mono dostupné v našem stabilním kanálu.
  • Xamarin Visual Studio Xamarin.iOS – při nasazování aplikací WatchKit v sadě Visual Studio se The file ‘bin\iPhoneSimulator\Debug\WatchKitApp1WatchKitApp.app\WatchKitApp1WatchKitApp’ does not exist může zobrazit chyba.

Nahlásit všechny chyby, které najdete na GitHub.

Řešení potíží

V následujících částech jsou uvedené některé známé problémy, ke kterým může dojít při použití tvOS 9 s Xamarin.tvOS, a jejich řešení:

Neplatný spustitelný soubor – Spustitelný soubor neobsahuje bitcode

Při pokusu o odeslání aplikace Xamarin.tvOS do Apple TV App Store se může zobrazit chybová zpráva ve tvaru Neplatný spustitelný soubor – spustitelný soubor neobsahuje bitcode.

Pokud chcete tento problém vyřešit, proveďte následující:

  1. V Visual Studio pro Mac klikněte pravým tlačítkem na soubor xamarin.tvOS Project na Průzkumník řešení vyberte Možnosti.

  2. Vyberte tvOS Build a ujistěte se, že jste v konfiguraci vydání:

    Výběr možností sestavení tvOS

  3. Přidejte --bitcode=asmonly do --bitcode=asmonly a klikněte na tlačítko OK.

  4. Znovu sestavte aplikaci v konfiguraci vydání.

Ověření, že vaše aplikace tvOS obsahuje bitcode

Pokud chcete ověřit, že sestavení aplikace Xamarin.tvOS obsahuje Bitcode, otevřete aplikaci Terminal a zadejte následující příkaz:

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 odlišné, ale ostatní pole by měla být stejná.

Budete se muset ujistit, že všechny statické knihovny třetích stran ( ), které používáte, byly vytvořené pro knihovny tvOS (ne knihovny iOS) a že obsahují také informace .a o bitcode.

U aplikací nebo knihoven, které obsahují platný bitový size kód, bude hodnota větší než jedna. V některých situacích knihovna může mít značku bitového kódu, ale neobsahuje platný bitový kód. Napří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 size rozdílu mezi dvěma knihovnami v uvedeném příkladu výše. Knihovna se musí vygenerovat z archivního sestavení Xcode s povoleným bitcode (nastavení ENABLE_BITCODE Xcode) jako řešením tohoto problému s velikostí.

Aplikace, které obsahují jenom řez arm64, musí mít v seznamu UIRequiredDeviceCapabilities v souboru Info.plist také "arm64".

Při odesílání aplikace do Apple TV App Store k publikování se může zobrazit chyba ve tvaru:

"Aplikace, které obsahují jenom řez arm64, musí mít v seznamu UIRequiredDeviceCapabilities v souboru Info.plist také "arm64".

Pokud k tomu dojde, upravte Info.plist soubor a ujistěte se, že obsahuje následující klíče:

<key>UIRequiredDeviceCapabilities</key>
<array>
  <string>arm64</string>
</array>

Aplikaci znovu zkompilujte pro vydání a znovu odešlete do iTunes Připojení.

Provádění úlohy "MTouch" -- FAILED

Pokud používáte knihovnu třetí strany (například MonoGame) a vaše kompilace verze selhala s dlouhou řadou chybových zpráv končících na , zkuste do dalších argumentů touch přidat Task "MTouch" execution -- FAILED-gcc_flags="-framework OpenAL" : Task "MTouch" execution -- FAILED

Provedení úlohy MTouch

Měli byste také zahrnout do argumentů Další dotykové ovládání , mít možnosti linkeru nastavené na Propojit vše --bitcode=asmonly a provést čistou kompilaci. --bitcode=asmonly

Chyba ITMS-90471. Chybí ikona Velká

Pokud se zobrazí zpráva ve tvaru Chyba ITMS-90471. Při pokusu o odeslání aplikace Xamarin.tvOS do Apple TV chybí ikona Velká App Store k vydání, zkontrolujte následující:

  1. Ujistěte se, že jste do souboru, který jste vytvořili pomocí dokumentace k ikonám aplikací, Assets.car zahrnuly Assets.car
  2. Ujistěte se, že jste do konečné sady aplikací zahrnou soubor z dokumentace Práce s Assets.car ikonami a Assets.car obrázky.

Neplatný balíček – Aplikace, která podporuje herní kontrolery, musí také podporovat vzdálené apple TV.

nebo

Neplatný balíček – Aplikace Apple TV s architekturou GameController musí v souboru Info.plist aplikace obsahovat klíč GCSupportedGameControllers.

Herní kontrolery je možné použít k vylepšení hry a poskytování pocitu ponoření do hry. Lze je také použít k ovládání standardního rozhraní Apple TV, takže uživatel nemusí přepínat mezi vzdáleným a kontroleru.

Pokud odesíláte aplikaci Xamarin.tvOS s podporou game controlleru do Apple TV App Storu a zobrazí se chybová zpráva ve tvaru:

Zjistili jsme jeden nebo více problémů s vaším nedávným doručením s názvem aplikace. Vaše doručení bylo úspěšné, ale možná budete chtít při dalším doručení opravit následující problémy:

Neplatný balíček – Aplikace, která podporuje herní kontrolery, musí také podporovat vzdálené apple TV.

nebo

Neplatný balíček – Aplikace Apple TV s architekturou GameController musí v souboru Info.plist aplikace obsahovat klíč GCSupportedGameControllers.

Řešením je přidat do souboru aplikace podporu pro Siri Remote ( GCMicroGamepadInfo.plist ). Apple přidal profil Micro Game Controlleru pro cílení na Siri Remote. Například zahrnovat 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é

Bluetooth herní kontrolery jsou volitelným nákupem, který můžou provést koncoví uživatelé, nemůže vaše aplikace uživatele přinutit, aby si ho koupí. Pokud vaše aplikace podporuje herní kontrolery, musí také podporovat Siri Remote, aby ji všichni uživatelé Apple TV museli používat.

Další informace najdete v naší části Práce s herními ovladači v naší dokumentaci k Siri Remote a Bluetooth Controllers.

Nekompatibilní cílová rozhraní: . NetPortable, Version=v4.5, Profile=Profile78

Při pokusu o zahrnutí přenosné knihovny tříd (PCL) do projektu Xamarin.tvOS se může zobrazit zpráva ve formě:

Nekompatibilní cílová rozhraní: . NetPortable, Version=v4.5, Profile=Profile78

Pokud chcete tento problém vyřešit, přidejte soubor XML s Xamarin.TVOS.xml názvem 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.

Po nastavení tohoto souboru byste měli být schopni úspěšně přidat soubor PCL do projektu Xamarin.tvOS.