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
Unsupported
wartość może pojawić się wyskakujące okienkoCould 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:
W Visual Studio dla komputerów Mac kliknij prawym przyciskiem myszy plik projektu Xamarin.tvOS w Eksplorator rozwiązań i wybierz pozycję Opcje.
Wybierz pozycję tvOS Build (Kompilacja systemu tvOS) i upewnij się, że masz konfigurację wydania :
Dodaj
--bitcode=asmonly
do pola Dodatkowe argumenty mtouch i kliknij przycisk OK .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_BITCODE
Xcode ) 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 -- FAILED
stronie , spróbuj dodać -gcc_flags="-framework OpenAL"
do dodatkowych argumentów dotyku:
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:
- Upewnij się, że zasoby dużych ikon zostały uwzględnione w
Assets.car
pliku utworzonym przy użyciu dokumentacji Ikony aplikacji. - 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.