Pemecahan masalah aplikasi tvOS yang dibangun dengan Xamarin
Artikel ini membahas masalah yang mungkin Anda temui saat bekerja dengan dukungan tvOS Xamarin.
Masalah Umum
Rilis dukungan tvOS Xamarin saat ini memiliki masalah yang diketahui berikut:
- Mono Framework – Mono 4.3 Cryptography.ProtectedData gagal mendekripsi data dari Mono 4.2. Akibatnya, paket NuGet akan gagal dipulihkan dengan kesalahan
Data unprotection failed
ketika sumber NuGet yang dilindungi dikonfigurasi.- Penanganan masalah – Di Visual Studio untuk Mac Anda harus menambahkan kembali sumber paket NuGet apa pun yang menggunakan autentikasi kata sandi sebelum mencoba memulihkan paket kembali.
- Add-in Visual Studio untuk Mac w/ F# - Kesalahan saat membuat templat F# Android di Windows. Ini masih harus berfungsi dengan benar di Mac.
- Xamarin.Mac – Saat menjalankan proyek templat terpadu Xamarin.Mac dengan kerangka kerja target diatur ke
Unsupported
, popupCould not connect to the debugger
mungkin muncul.- Solusi Potensial – Menurunkan tingkat versi kerangka kerja Mono yang tersedia di saluran Stabil kami.
- Xamarin Visual Studio & Xamarin.iOS – Saat menyebarkan aplikasi WatchKit di Visual studio, kesalahan
The file ‘bin\iPhoneSimulator\Debug\WatchKitApp1WatchKitApp.app\WatchKitApp1WatchKitApp’ does not exist
mungkin muncul.
Harap laporkan bug yang Anda temukan di GitHub.
Pemecahan Masalah
Bagian berikut mencantumkan beberapa masalah yang diketahui yang dapat terjadi saat menggunakan tvOS 9 dengan Xamarin.tvOS dan solusi untuk masalah tersebut:
Executable tidak valid - Executable tidak berisi bitcode
Saat mencoba mengirimkan aplikasi Xamarin.tvOS ke App Store Apple TV, Anda mungkin mendapatkan pesan kesalahan dalam formulir "Dapat Dieksekusi Tidak Valid - Executable tidak berisi bitcode".
Untuk mengatasi masalah ini, lakukan hal berikut:
Di Visual Studio untuk Mac, klik kanan File Proyek Xamarin.tvOS Anda di Penjelajah Solusi dan pilih Opsi.
Pilih build tvOS dan pastikan Anda berada di konfigurasi Rilis :
Tambahkan
--bitcode=asmonly
ke bidang Argumen mtouch tambahan dan klik tombol OK .Bangun ulang aplikasi Anda di konfigurasi Rilis .
Memverifikasi bahwa Aplikasi tvOS Anda Berisi Bitcode
Untuk memverifikasi bahwa build Aplikasi Xamarin.tvOS Anda berisi Bitcode, buka aplikasi Terminal dan masukkan yang berikut:
otool -l /path/to/your/tv.app/tv
Dalam output, cari yang berikut ini:
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
dan size
akan berbeda tetapi bidang lain harus identik.
Anda harus memastikan bahwa pustaka statis pihak ketiga (.a
) yang Anda gunakan dibangun terhadap pustaka tvOS (bukan pustaka iOS) dan bahwa pustaka tersebut juga menyertakan informasi bitcode.
Untuk aplikasi atau pustaka yang menyertakan bitcode size
yang valid, akan lebih besar dari satu. Ada beberapa situasi di mana pustaka dapat memiliki penanda bitcode, namun tidak berisi kode bit yang valid. Contohnya:
Kode Bit Tidak Valid
$ otool -arch arm64 libLibrary.a | grep __bitcode -A 3
sect name __bitcode
segname __LLVM
add 0x0000000000000670
size 0x0000000000000001
Kode Bit yang Valid
$ otool -l -arch arm64 libDownloadableAgent-tvos.a |grep __bitcode -A 3
sectname __bitcode
segname __LLVM
addr 0x000000000001d2d0
size 0x0000000000045440
Perhatikan perbedaan antara size
dua pustaka dalam contoh yang tercantum berjalan di atas. Pustaka harus dihasilkan dari build arsip Xcode dengan bitcode diaktifkan (pengaturan ENABLE_BITCODE
Xcode ) sebagai solusi untuk masalah ukuran ini.
Aplikasi yang hanya berisi ikatan arm64 juga harus memiliki "arm64" dalam daftar UIRequiredDeviceCapabilities di Info.plist
Saat mengirimkan app ke App Store Apple TV untuk publikasi, Anda mungkin mendapatkan kesalahan dalam formulir:
"Aplikasi yang hanya berisi ikatan arm64 juga harus memiliki "arm64" dalam daftar UIRequiredDeviceCapabilities di Info.plist"
Jika ini terjadi, edit file Anda Info.plist
dan pastikan file tersebut memiliki kunci berikut:
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
Kompilasi ulang aplikasi Anda untuk rilis dan kirim ulang ke iTunes Koneksi.
Tugas "MTouch" eksekusi -- GAGAL
Jika Anda menggunakan pustaka pihak ke-3 (seperti MonoGame) dan kompilasi rilis Anda gagal dengan serangkaian pesan kesalahan panjang yang berakhiran Task "MTouch" execution -- FAILED
, coba tambahkan ke argumen Sentuhan -gcc_flags="-framework OpenAL"
tambahan Anda:
Anda juga harus menyertakan --bitcode=asmonly
dalam argumen Sentuhan tambahan, mengatur opsi linker Anda ke Tautkan Semua dan melakukan kompilasi bersih.
Kesalahan ITMS-90471. Ikon Besar hilang
Jika Anda mendapatkan pesan dalam formulir "KESALAHAN ITMS-90471. Ikon Besar hilang" saat mencoba mengirimkan aplikasi Xamarin.tvOS ke Apple TV App Store untuk rilis, silakan periksa hal berikut:
- Pastikan Anda telah menyertakan aset Ikon Besar dalam
Assets.car
file yang Anda buat menggunakan dokumentasi Ikon Aplikasi. - Pastikan Anda menyertakan
Assets.car
file dari dokumentasi Bekerja dengan Ikon dan Gambar di bundel aplikasi akhir Anda.
Bundel tidak valid – Aplikasi yang mendukung pengontrol game juga harus mendukung remote Apple TV
or
Bundel tidak valid – App Apple TV dengan kerangka kerja GameController harus menyertakan kunci GCSupportedGameControllers di Info.plist aplikasi
Pengontrol Game dapat digunakan untuk meningkatkan gameplay dan memberikan rasa perendaman dalam sebuah game. Mereka juga dapat digunakan untuk mengontrol antarmuka Apple TV standar sehingga pengguna tidak perlu beralih antara remote dan pengontrol.
Jika Anda mengirimkan aplikasi Xamarin.tvOS dengan dukungan Pengontrol Game ke App store Apple TV dan Anda mendapatkan pesan kesalahan dalam bentuk:
Kami telah menemukan satu atau beberapa masalah dengan pengiriman terbaru Anda untuk "nama aplikasi". Pengiriman Anda berhasil, tetapi Anda mungkin ingin memperbaiki masalah berikut dalam pengiriman Anda berikutnya:
Bundel tidak valid – Aplikasi yang mendukung pengontrol game juga harus mendukung remote Apple TV.
or
Bundel tidak valid – App Apple TV dengan kerangka kerja GameController harus menyertakan kunci GCSupportedGameControllers di Info.plist aplikasi.
Solusinya adalah menambahkan dukungan untuk Siri Remote (GCMicroGamepad
) ke file aplikasi Info.plist
Anda. Profil Pengontrol Micro Game telah ditambahkan oleh Apple untuk menargetkan Siri Remote. Misalnya, sertakan kunci berikut:
<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/>
Penting
Pengontrol Game Bluetooth adalah pembelian opsional yang mungkin dilakukan pengguna akhir, aplikasi Anda tidak dapat memaksa pengguna untuk membelinya. Jika aplikasi Anda mendukung Pengontrol Game, aplikasi juga harus mendukung Siri Remote sehingga game dapat digunakan oleh semua pengguna Apple TV.
Untuk informasi selengkapnya, silakan lihat bagian Bekerja dengan Pengontrol Game kami dari dokumentasi Pengontrol Jarak Jauh dan Bluetooth Siri kami.
Kerangka kerja target yang tidak kompatibel: . NetPortable, Version=v4.5, Profile=Profile78
Saat mencoba memasukkan Pustaka Kelas Portabel (PCL) ke dalam proyek Xamarin.tvOS, Anda mungkin mendapatkan pesan untuk dibentuk:
Kerangka kerja target yang tidak kompatibel: . NetPortable, Version=v4.5, Profile=Profile78
Untuk mengatasi masalah ini, tambahkan file XML yang disebut Xamarin.TVOS.xml
dengan konten berikut:
<Framework Identifier="Xamarin.TVOS" MinimumVersion="1.0" Profile="*" DisplayName="Xamarin.TVOS"/>
Ke jalur berikut:
/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/xbuild-frameworks/.NETPortable/v4.5/Profile/Profile259/SupportedFrameworks/
Perhatikan bahwa nomor profil di jalur harus cocok dengan nomor profil PCL.
Dengan file ini di tempat, Anda harus berhasil menambahkan file PCL ke proyek Xamarin.tvOS.