Xamarin을 사용하여 빌드된 tvOS 앱 문제 해결

이 문서에서는 Xamarin의 tvOS 지원을 사용하는 동안 발생할 수 있는 문제에 대해 설명합니다.

알려진 문제

Xamarin의 tvOS 지원의 현재 릴리스에는 다음과 같은 알려진 문제가 있습니다.

  • Mono Framework – Mono 4.3 Cryptography.ProtectedData가 Mono 4.2에서 데이터의 암호를 해독하지 못합니다. 따라서 보호된 NuGet 원본이 구성되면 NuGet 패키지가 오류 Data unprotection failed 와 함께 복원되지 않습니다.
    • 해결 방법 – Mac용 Visual Studio 패키지를 다시 복원하기 전에 암호 인증을 사용하는 NuGet 패키지 원본을 다시 추가해야 합니다.
  • F# 추가 기능과 Mac용 Visual Studio – Windows에서 F# Android 템플릿을 만들 때 오류가 발생합니다. Mac에서는 여전히 올바르게 작동해야 합니다.
  • Xamarin.Mac – 대상 프레임워크가 설정된 UnsupportedXamarin.Mac 통합 템플릿 프로젝트를 실행할 때 팝업 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에서 찾은 버그를 보고하세요.

문제 해결

다음 섹션에서는 Xamarin.tvOS와 함께 tvOS 9를 사용할 때 발생할 수 있는 알려진 문제 및 해당 문제에 대한 솔루션을 나열합니다.

잘못된 실행 파일 - 실행 파일에 비트 코드가 포함되어 있지 않습니다.

Xamarin.tvOS 앱을 Apple TV 앱 스토어에 제출하려고 하면 "잘못된 실행 파일 - 실행 파일에 비트 코드가 포함되어 있지 않습니다."라는 오류 메시지가 표시될 수 있습니다.

이 문제를 해결하려면 다음을 수행합니다.

  1. Mac용 Visual Studio 솔루션 탐색기 Xamarin.tvOS 프로젝트 파일을 마우스 오른쪽 단추로 클릭하고 옵션을 선택합니다.

  2. tvOS 빌드를 선택하고 릴리스 구성에 있는지 확인합니다.

    tvOS 빌드 옵션 선택

  3. 추가 mtouch 인수 필드에 추가하고 --bitcode=asmonly 확인 단추를 클릭합니다.

  4. 릴리스 구성에서 앱을 다시 빌드 합니다.

tvOS 앱에 비트 코드가 포함되어 있는지 확인

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 라이브러리(.aiOS 라이브러리 아님)에 대해 빌드되었는지와 비트코드 정보도 포함하는지 확인해야 합니다.

유효한 비트코드를 포함하는 앱 또는 라이브러리의 size 경우 1보다 큽니다. 라이브러리에 비트 코드 표식이 있지만 유효한 비트 코드가 포함되지 않은 경우도 있습니다. 예시:

잘못된 비트 코드

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

유효한 비트 코드

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

나열된 예제에서 size 두 라이브러리 간의 차이는 위에서 실행됩니다. 이 크기 문제에 대한 솔루션으로 비트코드가 활성화된 Xcode(Xcode 설정 ENABLE_BITCODE)를 사용하여 Xcode 보관 빌드에서 라이브러리를 생성해야 합니다.

arm64 조각만 포함된 앱은 Info.plist의 UIRequiredDeviceCapabilities 목록에 "arm64"가 있어야 합니다.

게시를 위해 Apple TV 앱 스토어에 앱을 제출할 때 양식에 오류가 발생할 수 있습니다.

"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 오류" 형식의 메시지가 표시되면 릴리스를 위해 Apple TV 앱 스토어에 Xamarin.tvOS 앱을 제출하는 동안 "큰 아이콘이 없습니다." 다음을 검사.

  1. 앱 아이콘 설명서를 사용하여 만든 파일에 큰 아이콘 자산을 포함해야 합니다.Assets.car
  2. 최종 애플리케이션 번들에 아이콘 및 이미지 작업 설명서의 파일을 포함 Assets.car 해야 합니다.

잘못된 번들 - 게임 컨트롤러를 지원하는 앱도 Apple TV 리모컨을 지원해야 합니다.

또는

잘못된 번들 – GameController 프레임워크를 사용하는 Apple TV 앱은 앱의 Info.plist에 GCSupportedGameControllers 키를 포함해야 합니다.

게임 컨트롤러를 사용하여 게임 플레이를 향상시키고 게임에 몰입감을 제공할 수 있습니다. 사용자가 원격 및 컨트롤러 간에 전환할 필요가 없도록 표준 Apple TV 인터페이스를 제어하는 데 사용할 수도 있습니다.

게임 컨트롤러 지원을 사용하여 Xamarin.tvOS 앱을 Apple TV 앱 스토어에 제출하는 경우 다음과 같은 형식의 오류 메시지가 표시됩니다.

"앱 이름"에 대한 최근 배달과 관련된 하나 이상의 문제를 발견했습니다. 배달에 성공했지만 다음 배달에서 다음 문제를 해결할 수 있습니다.

잘못된 번들 – 게임 컨트롤러를 지원하는 앱도 Apple TV 리모컨을 지원해야 합니다.

또는

잘못된 번들 – GameController 프레임워크를 사용하는 Apple TV 앱은 앱의 Info.plist에 GCSupportedGameControllers 키를 포함해야 합니다.

솔루션은 Siri 원격(GCMicroGamepad)에 대한 지원을 앱의 Info.plist 파일에 추가하는 것입니다. 마이크로 게임 컨트롤러 프로필은 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/>

Important

Bluetooth 게임 컨트롤러는 최종 사용자가 만들 수 있는 선택적 구매이며, 앱은 사용자가 강제로 구매할 수 없습니다. 앱이 게임 컨트롤러를 지원하는 경우 모든 Apple TV 사용자가 게임을 사용할 수 있도록 Siri 원격도 지원해야 합니다.

자세한 내용은 Siri 원격 및 Bluetooth 컨트롤러 설명서의 게임 컨트롤러 작업 섹션을 참조하세요.

호환되지 않는 대상 프레임워크: . NetPortable, Version=v4.5, Profile=Profile78

Xamarin.tvOS 프로젝트에 PCL(이식 가능한 클래스 라이브러리)을 포함하려고 하면 다음과 같은 메시지가 표시될 수 있습니다.

호환되지 않는 대상 프레임워크: . 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의 프로필 번호와 일치해야 합니다.

이 파일을 사용하면 Xamarin.tvOS 프로젝트에 PCL 파일을 성공적으로 추가할 수 있습니다.