共用方式為


針對使用 Xamarin 建置的 tvOS 應用程式進行疑難解答

本文涵蓋使用 Xamarin tvOS 支援時可能會遇到的問題。

已知問題

Xamarin 的 tvOS 支援目前版本有下列已知問題:

  • Mono Framework – Mono 4.3 Cryptography.ProtectedData 無法解密 Mono 4.2 中的數據。 因此,設定受保護的 NuGet 來源時,NuGet 套件將無法還原並出現錯誤 Data unprotection failed
    • 因應措施 – 在 Visual Studio for Mac 中,您必須在重新嘗試還原套件之前,新增任何使用密碼驗證的 NuGet 套件來源。
  • Visual Studio for Mac w/ F# 載入 宏 – 在 Windows 上建立 F# Android 範本時發生錯誤。 這仍應在Mac上正常運作。
  • Xamarin.Mac – 執行 Xamarin.Mac 整合範本專案,並將目標 Framework 設定為 Unsupported時,可能會顯示彈出視窗 Could not connect to the debugger
    • 可能的因應措施 – 將穩定通道中提供的Mono架構版本降級。
  • Xamarin Visual Studio 和 Xamarin.iOS – 在 Visual Studio 中部署 WatchKit 應用程式時,可能會出現錯誤 The file ‘bin\iPhoneSimulator\Debug\WatchKitApp1WatchKitApp.app\WatchKitApp1WatchKitApp’ does not exist

請回報您在 GitHub找到的任何 Bug。

疑難排解

下列各節列出搭配 Xamarin.tvOS 使用 tvOS 9 時可能發生的一些已知問題,以及這些問題的解決方案:

無效的可執行檔 - 可執行檔不包含 bitcode

嘗試將 Xamarin.tvOS 應用程式提交至 Apple TV App Store 時,您可能會收到錯誤訊息:「 可執行檔無效 - 可執行檔不包含 bitcode」

若要解決此問題,請執行下列動作:

  1. 在 Visual Studio for Mac 中,以滑鼠右鍵按兩下 方案總管 中的 Xamarin.tvOS 專案檔,然後選取 [選項]。

  2. 選取tvOS組建,並確定您位於 [發行] 組態上

    選取tvOS建置選項

  3. 新增 --bitcode=asmonly 至 [ 其他 mtouch 自變數] 字段,然後按兩下 [ 確定] 按鈕。

  4. 在發行組態中重建您的應用程式。

確認您的tvOS應用程式包含 Bitcode

若要確認您的 Xamarin.tvOS 應用程式組建包含 Bitcode,請開啟終端機應用程式並輸入下列專案:

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

在輸出中,尋找下列專案:

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

addrsize 會不同,但其他欄位應該相同。

您必須確定您使用的任何第三方靜態 () 連結庫都是針對tvOS連結庫建.a置的,而不是iOS連結庫,而且它們也包含位碼資訊。

對於包含有效位碼的應用程式或連結庫, size 將會大於一個。 在某些情況下,連結庫可以有 bitcode 標記,但不包含有效的 bitcode。 例如:

無效的 Bitcode

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

有效的 Bitcode

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

請注意上述 size 範例中兩個連結庫之間的差異。 連結庫必須從已啟用位碼的 Xcode 封存組建產生(Xcode 設定 ENABLE_BITCODE),才能解決這個大小問題。

只有包含 arm64 配量的應用程式也必須在 Info.plist 的 UIRequiredDeviceCapabilities 列表中具有 “arm64”

將應用程式提交至 Apple TV App Store 以進行發行時,您可能會在表單中收到錯誤:

“只有包含 arm64 配量的應用程式也必須在 Info.plist 中的 UIRequiredDeviceCapabilities 列表中具有 ”arm64”

如果發生這種情況,請編輯您的 Info.plist 檔案,並確定檔案具有下列索引鍵:

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

重新編譯您的應用程式以發行並重新提交至 iTunes 連線。

工作 「MTouch」 執行 -- FAILED

如果您使用第三方連結庫(例如 MonoGame)和您的發行編譯失敗,且結尾為 的一連串錯誤訊息 Task "MTouch" execution -- FAILED,請嘗試新增 -gcc_flags="-framework OpenAL" 至其他 觸控自變數

工作 MTouch 執行

您也應該包含在 --bitcode=asmonly[其他觸控自變數]中,讓鏈接器選項設定為 [全部 連結],並執行全新編譯。

ITMS-90471 錯誤。 遺漏大型圖示

如果您收到格式為「ITMS-90471 錯誤」的訊息。 嘗試將 Xamarin.tvOS 應用程式提交至 Apple TV App Store 以發行時,遺漏大型圖示,請檢查下列專案:

  1. 請確定您已使用應用程式圖示檔建立的檔案中包含Assets.car大型圖示資產。
  2. 請確定您在最終的應用程式套件組合中包含Assets.car使用圖示和影像檔中的檔案

無效的套件組合 – 支援遊戲控制器的應用程式也必須支援Apple TV 遠端

無效的套件組合 – 具有 GameController 架構的 Apple TV 應用程式必須在應用程式的 Info.plist 中包含 GCSupportedGameControllers 密鑰

遊戲控制器可用來增強遊戲功能,並提供遊戲的沉浸感。 它們也可以用來控制標準 Apple TV 介面,讓使用者不需要在遠端和控制器之間切換。

如果您要向 Apple TV App Store 提交具有遊戲控制器支援的 Xamarin.tvOS 應用程式,而且您收到錯誤訊息的格式如下:

我們發現您最近傳遞「應用程式名稱」時發生一或多個問題。 您的傳遞成功,但您可能想要更正下一次傳遞中的下列問題:

無效的套件組合 – 支援遊戲控制器的應用程式也必須支援Apple TV 遠端。

無效的套件組合 – 具有 GameController 架構的 Apple TV 應用程式必須在應用程式的 Info.plist 中包含 GCSupportedGameControllers 密鑰。

解決方案是將 Siri Remote (GCMicroGamepad) 的支援新增至您應用程式的 Info.plist 檔案。 Apple 已新增 Micro Game Controller 配置檔,以將 Siri 遠端設為目標。 例如,包含下列索引鍵:

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

重要

藍牙 遊戲控制器是使用者可能購買的選擇性購買,您的應用程式無法強制用戶購買。 如果您的 app 支援遊戲控制器,它也必須支援 Siri 遠端,讓所有 Apple TV 使用者都能使用遊戲。

如需詳細資訊,請參閱 Siri 遠端和 藍牙 控制器檔的使用遊戲控制器一節

不相容的目標架構:。NetPortable,Version=v4.5,Profile=Profile78

嘗試將可攜式類別庫 (PCL) 包含在 Xamarin.tvOS 專案中時,您可能會收到一則訊息, 格式如下:

不相容的目標架構:。NetPortable,Version=v4.5,Profile=Profile78

若要解決此問題,請使用下列內容新增名為 Xamarin.TVOS.xml 的 XML 檔案:

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

前往下列路徑:

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

請注意,路徑中的配置檔編號必須符合 PCL 的配置檔編號。

在此檔案就緒后,您應該能夠成功將 PCL 檔案新增至 Xamarin.tvOS 專案。