Ř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é okno Could 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:

  1. 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.

  2. Vyberte tvOS Build a ujistěte se, že jste v konfiguraci vydané verze :

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

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

  4. 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_BITCODEXcode) 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í:

Provádění úlohy MTouch

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í:

  1. Ujistěte se, že jste do souboru, který jste vytvořili, zahrnuli prostředky Assets.car velké ikony pomocí dokumentace ke ikonám aplikací.
  2. 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.