針對使用 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」。
若要解決此問題,請執行下列動作:
在 Visual Studio for Mac 中,以滑鼠右鍵按兩下 方案總管 中的 Xamarin.tvOS 專案檔,然後選取 [選項]。
選取tvOS組建,並確定您位於 [發行] 組態上:
新增
--bitcode=asmonly
至 [ 其他 mtouch 自變數] 字段,然後按兩下 [ 確定] 按鈕。在發行組態中重建您的應用程式。
確認您的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
addr
和 size
會不同,但其他欄位應該相同。
您必須確定您使用的任何第三方靜態 () 連結庫都是針對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"
至其他 觸控自變數:
您也應該包含在 --bitcode=asmonly
[其他觸控自變數]中,讓鏈接器選項設定為 [全部 連結],並執行全新編譯。
ITMS-90471 錯誤。 遺漏大型圖示
如果您收到格式為「ITMS-90471 錯誤」的訊息。 嘗試將 Xamarin.tvOS 應用程式提交至 Apple TV App Store 以發行時,遺漏大型圖示,請檢查下列專案:
無效的套件組合 – 支援遊戲控制器的應用程式也必須支援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 專案。