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, popup Could 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:

  1. Di Visual Studio untuk Mac, klik kanan File Proyek Xamarin.tvOS Anda di Penjelajah Solusi dan pilih Opsi.

  2. Pilih build tvOS dan pastikan Anda berada di konfigurasi Rilis :

    Select tvOS Build options

  3. Tambahkan --bitcode=asmonly ke bidang Argumen mtouch tambahan dan klik tombol OK .

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

Task MTouch execution

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:

  1. Pastikan Anda telah menyertakan aset Ikon Besar dalam Assets.car file yang Anda buat menggunakan dokumentasi Ikon Aplikasi.
  2. 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.