Xamarin.iOS의 포함된 프레임워크

이 문서에서는 애플리케이션 개발자가 앱에 사용자 프레임워크를 포함할 수 있는 방법을 설명합니다.

iOS 8.0 Apple을 사용하면 앱 확장과 Xcode의 기본 앱 간에 코드를 공유하는 포함된 프레임워크를 만들 수 있습니다.

Xamarin.iOS 9.0은 Xamarin.iOS 앱에서 이러한 포함된 프레임워크(Xcode로 생성됨)를 사용하는 지원을 추가합니다. 모든 형식의 Xamarin.iOS 프로젝트에서 포함된 프레임워크를 만들 수 없으며 기존 네이티브(Objective-C) 프레임워크만 사용합니다.

Xamarin.iOS에서 프레임워크를 사용하는 방법에는 두 가지가 있습니다.

  • 프로젝트의 iOS 빌드 옵션에서 추가 mtouch 인수에 다음을 추가하여 프레임워크를 mtouch 도구에 전달합니다.

    --framework:/Path/To/My.Framework
    

    각 프로젝트 구성에 대해 설정해야 합니다.

  • 상황에 맞는 메뉴에서 네이티브 참조 추가

프로젝트를 마우스 오른쪽 단추로 클릭하고 네이티브 참조를 추가하려면 찾아보기

Select Add native references in Visual Studio for Mac

이는 모든 구성에서 작동합니다.

이후 버전의 Mac용 Visual Studio 및 Visual Studio용 Xamarin Tools에서는 프로젝트 파일을 수동으로 편집하지 않고도 IDE 내에서 프레임워크를 사용할 수 있습니다.

Github에서 몇 가지 샘플 프로젝트를 찾을 수 있습니다.

제한 사항

  • 포함된 프레임워크는 통합 프로젝트에서만 지원 됩니다 .
  • 포함된 프레임워크는 iOS 8.0 이상의 배포 대상이 있는 프로젝트에서만 지원됩니다.
  • 확장에 포함된 프레임워크가 필요한 경우 컨테이너 앱에도 프레임워크에 대한 참조가 있어야 합니다. 그렇지 않으면 프레임워크가 앱 번들에 포함되지 않습니다.

Mono 런타임

내부적으로 Xamarin.iOS는 Mono 런타임을 각 확장 및 컨테이너 앱에 정적으로 연결하는 대신 이 기능을 활용하여 Mono 런타임을 프레임워크로 연결합니다.

컨테이너 앱이 통합 앱이고 확장이 포함되고 대상 배포가 iOS 8.0 이상인 경우 자동으로 수행됩니다.

확장이 없는 앱은 프레임워크를 참조하는 앱이 하나만 있는 경우 프레임워크 사용에 대한 크기 페널티가 있기 때문에 여전히 Mono 런타임과 정적으로 연결됩니다.

이 동작은 프로젝트의 iOS 빌드 옵션에 추가 mtouch 인수로 다음을 추가하여 앱 개발자가 재정의할 수 있습니다.

  • --mono:static: Mono 런타임을 정적으로 연결합니다.
  • --mono:framework: Mono 런타임을 프레임워크로 연결합니다.

확장이 없는 앱에서도 Mono 런타임을 프레임워크로 연결하는 한 가지 시나리오는 실행 파일 크기를 줄이고 Apple이 실행 파일에 적용하는 크기 제한을 극복하는 것입니다. 참고로 Mono 런타임은 아키텍처당 약 1.7MB를 추가합니다(Xamarin.iOS 8.12 기준). 그러나 릴리스와 앱 간에는 차이가 있습니다. Mono 프레임워크는 아키텍처당 약 2.3MB를 추가합니다. 즉, 확장이 없는 단일 아키텍처 앱의 경우 프레임워크로 Mono 런타임과 앱 링크를 만들면 실행 파일이 최대 1.7MB 축소되지만 최대 2.3MB 프레임워크를 추가하여 0.6MB 더 큰 앱이 됩니다.