Xamarin.Mac 통합 애플리케이션을 64비트로 업데이트

2018년 1월 현재 Apple은 새 Mac App Store 제출 대상 64비트가 필요합니다. Mac App Store에서 이미 사용할 수 있는 앱은 2018년 6월까지 대상 64비트로 업데이트해야 합니다.

파일>새 Xamarin.Mac 프로젝트 템플릿은 기본적으로 64비트 애플리케이션을 만들므로 최근에 만든 앱은 이미 64비트와 호환되며 변경이 필요하지 않습니다.

64비트 대상 지정

  1. Xamarin.Mac 앱에 대한 프로젝트 옵션 창을 엽니다.

    The contextual menu for the project

  2. Mac 빌드를 선택하고 지원되는 아키텍처를x86_64 설정합니다.

    Setting the supported architectures to x86_64

  3. 앱에 네이티브 참조 또는 바인딩 프로젝트와 같은 외부 종속성이 있는 경우 대상 64비트로 업데이트합니다.

Errors

64비트 지원을 사용하여 애플리케이션을 처음 빌드하거나 실행할 때 clang 또는 런타임 문제에서 링크 오류가 발생할 수 있습니다. 이러한 오류는 타사 종속성(예: Xamarin.Mac의 네이티브 참조 또는 바인딩 프로젝트 또는 수동으로 로드된 시스템 전체 프레임워크)이 64비트로 업데이트되지 않은 경우에 발생할 수 있습니다.

프로젝트를 64비트로 변환하는 것은 큰 변화이며, 간접적으로 다양한 프로그래밍 오류를 발견할 수 있습니다. 특히 프로젝트에 연결된 p/invoke 서명 및 네이티브 코드에 영향을 미치는 데이터 구조의 크기와 맞춤을 변경할 수 있습니다. 지정된 빌드 경고를 검토하고 나중에 애플리케이션을 철저히 테스트하여 잠재적인 문제를 파악하는 것이 좋습니다.

64비트를 대상으로 하지 않는 동적으로 연결된 타사 종속성으로 인한 오류 예:

ld : warning : ignoring file PATH/ThirdPartyLibrary.framework/ThirdPartyLibrary, 
file was built for i386 which is not the architecture being linked (x86_64): 
PATH/ThirdPartyLibrary.framework/ThirdPartyLibrary 

이 오류는 런타임 시 예상 핸들 대신 반환하여 dlopenIntPtr.Zero 따를 수 있습니다.

64비트를 대상으로 하지 않는 정적으로 연결된 타사 종속성으로 인한 오류 예:

Undefined symbols for architecture x86_64:
  "_LibraryFunction", referenced from:
     -u command line option
ld: symbol(s) not found for architecture x86_64 

성공적으로 빌드하고 실행하려면 이러한 종속성을 64비트로 업데이트하고 앱을 다시 컴파일합니다.