Rozwiązywanie problemów z aplikacjami tvOS utworzonymi za pomocą platformy Xamarin

W tym artykule opisano problemy, które mogą wystąpić podczas pracy z obsługą systemu tvOS platformy Xamarin.

Znane problemy

Bieżąca wersja obsługi systemu tvOS platformy Xamarin ma następujące znane problemy:

  • Mono Framework — program Mono 4.3 Cryptography.ProtectedData nie może odszyfrować danych z platformy Mono 4.2. W związku z tym pakiety NuGet nie zostaną przywrócone z powodu błędu Data unprotection failed po skonfigurowaniu chronionego źródła NuGet.
    • Obejście — w Visual Studio dla komputerów Mac należy dodać wszystkie źródła pakietów NuGet, które używają uwierzytelniania haseł przed ponowną próbą przywrócenia pakietów.
  • Visual Studio dla komputerów Mac dodatku W/ F# — błąd podczas tworzenia szablonu języka F# dla systemu Android w systemie Windows. Powinno to nadal działać poprawnie na komputerze Mac.
  • Xamarin.Mac — podczas uruchamiania projektu ujednoliconego szablonu platformy Xamarin.Mac z docelowym zestawem framework na Unsupportedwartość może pojawić się wyskakujące okienko Could not connect to the debugger .
    • Potencjalne obejście — obniżenie wersji platformy Mono dostępnej w naszym kanale Stabilny.
  • Xamarin Visual Studio i Xamarin.iOS — podczas wdrażania aplikacji WatchKit w programie Visual Studio może pojawić się błąd The file ‘bin\iPhoneSimulator\Debug\WatchKitApp1WatchKitApp.app\WatchKitApp1WatchKitApp’ does not exist .

Zgłoś wszelkie błędy, które znajdziesz w witrynie GitHub.

Rozwiązywanie problemów

W poniższych sekcjach wymieniono niektóre znane problemy, które mogą wystąpić podczas korzystania z systemu tvOS 9 w systemie Xamarin.tvOS i rozwiązania tych problemów:

Nieprawidłowy plik wykonywalny — plik wykonywalny nie zawiera kodu bitowego

Podczas próby przesłania aplikacji platformy Xamarin.tvOS do sklepu Apple TV App Store może zostać wyświetlony komunikat o błędzie w postaci "Nieprawidłowy plik wykonywalny — plik wykonywalny nie zawiera kodu bitowego".

Aby rozwiązać ten problem, wykonaj następujące czynności:

  1. W Visual Studio dla komputerów Mac kliknij prawym przyciskiem myszy plik projektu Xamarin.tvOS w Eksplorator rozwiązań i wybierz pozycję Opcje.

  2. Wybierz pozycję tvOS Build (Kompilacja systemu tvOS) i upewnij się, że masz konfigurację wydania :

    Select tvOS Build options

  3. Dodaj --bitcode=asmonly do pola Dodatkowe argumenty mtouch i kliknij przycisk OK .

  4. Ponownie skompiluj aplikację w konfiguracji wydania .

Sprawdzanie, czy aplikacja systemu tvOS zawiera kod bitowy

Aby sprawdzić, czy kompilacja aplikacji platformy Xamarin.tvOS zawiera kod bitowy, otwórz aplikację terminalu i wprowadź następujące polecenie:

otool -l /path/to/your/tv.app/tv

W danych wyjściowych wyszukaj następujące elementy:

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 i size będą różne, ale inne pola powinny być identyczne.

Należy upewnić się, że wszystkie używane biblioteki statyczne (.a) innych firm zostały skompilowane względem bibliotek systemu tvOS (a nie bibliotek systemu iOS) i że zawierają również informacje o kodzie bitowym.

W przypadku aplikacji lub bibliotek zawierających prawidłowy kod bitowy size będzie większy niż jeden. Istnieją pewne sytuacje, w których biblioteka może mieć znacznik kodu bitowego, ale nie zawiera prawidłowego kodu bitowego. Na przykład:

Nieprawidłowy kod bitowy

 $ otool -arch arm64 libLibrary.a | grep __bitcode -A 3
   sect name __bitcode
   segname __LLVM
      add 0x0000000000000670
      size 0x0000000000000001

Prawidłowy kod bitowy

$ otool -l -arch arm64 libDownloadableAgent-tvos.a |grep __bitcode -A 3
   sectname __bitcode
   segname __LLVM
      addr 0x000000000001d2d0
      size 0x0000000000045440

Zwróć uwagę na różnicę między size dwiema bibliotekami w powyższym przykładzie. Biblioteka musi być generowana na podstawie kompilacji archiwum Xcode z włączonym kodem bitowym (ustawienie ENABLE_BITCODEXcode ) jako rozwiązanie tego problemu z rozmiarem.

Aplikacje, które zawierają tylko fragment arm64, muszą również mieć wartość "arm64" na liście elementów UIRequiredDeviceCapabilities w pliku Info.plist

Podczas przesyłania aplikacji do sklepu Apple TV App Store do publikacji może wystąpić błąd w formularzu:

"Aplikacje, które zawierają tylko fragmentator arm64, muszą również mieć wartość "arm64" na liście elementów UIRequiredDeviceCapabilities w pliku Info.plist"

W takim przypadku zmodyfikuj Info.plist plik i upewnij się, że ma on następujące klucze:

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

Ponownie skompiluj aplikację pod kątem wydania i prześlij ją ponownie do programu iTunes Połączenie.

Wykonanie zadania "MTouch" — NIEPOWODZENIE

Jeśli używasz biblioteki innej firmy (takiej jak MonoGame) i kompilacja wydania nie powiodła się z długą serią komunikatów o błędach kończących się na Task "MTouch" execution -- FAILEDstronie , spróbuj dodać -gcc_flags="-framework OpenAL" do dodatkowych argumentów dotyku:

Task MTouch execution

Należy również uwzględnić --bitcode=asmonly dodatkowe argumenty dotykowe, aby opcje konsolidatora zostały ustawione na Link All i wykonać czystą kompilację.

Błąd ITMS-90471. Brak ikony Duży

Jeśli zostanie wyświetlony komunikat w formularzu "ITMS-90471 błąd. Brak ikony Duży" podczas próby przesłania aplikacji platformy Xamarin.tvOS do sklepu Apple TV App Store w celu wydania, sprawdź następujące kwestie:

  1. Upewnij się, że zasoby dużych ikon zostały uwzględnione w Assets.car pliku utworzonym przy użyciu dokumentacji Ikony aplikacji.
  2. Upewnij się, że plik został dołączony Assets.car do dokumentacji Praca z ikonami i obrazami w końcowym pakiecie aplikacji.

Nieprawidłowy pakiet — aplikacja, która obsługuje kontrolery gier, musi również obsługiwać zdalne urządzenie Apple TV

lub

Nieprawidłowy pakiet — aplikacje Apple TV z platformą GameController muszą zawierać klucz GCSupportedGameControllers w pliku Info.plist aplikacji

Kontrolery gier mogą służyć do ulepszania rozgrywki i zapewniają poczucie zanurzenia w grze. Mogą być one również używane do sterowania standardowym interfejsem Apple TV, dzięki czemu użytkownik nie musi przełączać się między pilotem a kontrolerem.

Jeśli przesyłasz aplikację Xamarin.tvOS z obsługą kontrolera gier do sklepu Apple TV App Store i otrzymujesz komunikat o błędzie w postaci:

Odkryliśmy co najmniej jeden problem z ostatnią dostawą dla "nazwy aplikacji". Dostarczanie zakończyło się pomyślnie, ale możesz rozwiązać następujące problemy w następnej dostawie:

Nieprawidłowy pakiet — aplikacja, która obsługuje kontrolery gier, musi również obsługiwać zdalne urządzenie Apple TV.

lub

Nieprawidłowy pakiet — aplikacje Apple TV z platformą GameController muszą zawierać klucz GCSupportedGameControllers w pliku Info.plist aplikacji.

Rozwiązaniem jest dodanie obsługi funkcji Siri Remote (GCMicroGamepad) do pliku aplikacji Info.plist . Profil Micro Game Controller został dodany przez firmę Apple w celu kierowania Siri Remote. Na przykład uwzględnij następujące klucze:

<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/>

Ważne

Kontrolery gier Bluetooth to opcjonalny zakup, który użytkownicy końcowi mogą dokonać, aplikacja nie może wymusić na użytkowniku zakupu. Jeśli Aplikacja obsługuje kontrolery gier, musi również obsługiwać Siri Remote, aby gra była używana przez wszystkich użytkowników apple TV.

Aby uzyskać więcej informacji, zobacz sekcję Praca z kontrolerami gier w naszej dokumentacji kontrolerów zdalnych i Bluetooth Siri.

Niezgodna struktura docelowa: . NetPortable, Version=v4.5, Profile=Profile78

Podczas próby dołączenia przenośnej biblioteki klas (PCL) do projektu Xamarin.tvOS może zostać wyświetlony komunikat w formularzu:

Niezgodna struktura docelowa: . NetPortable, Version=v4.5, Profile=Profile78

Aby rozwiązać ten problem, dodaj plik XML o nazwie Xamarin.TVOS.xml z następującą zawartością:

<Framework Identifier="Xamarin.TVOS" MinimumVersion="1.0" Profile="*" DisplayName="Xamarin.TVOS"/>

Do następującej ścieżki:

/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/xbuild-frameworks/.NETPortable/v4.5/Profile/Profile259/SupportedFrameworks/

Należy pamiętać, że numer profilu w ścieżce musi być zgodny z numerem profilu PCL.

Po zainstalowaniu tego pliku powinno być możliwe pomyślne dodanie pliku PCL do projektu Xamarin.tvOS.