Xamarin 앱 개발 테스트 #4

앞서 3편의 포스트를 통해 기본 Xamarin.Android 튜토리얼을 살펴보았다. 이번 글에서는 Xamarin의 본래 기능인 크로스 플랫폼 앱 개발과 관련한 내용을 좀 더 살펴보고자 한다.

Xamarin 문서에 보면 Android, iOS, Windows Phone 등 서로 다른 플랫폼 앱을 어떻게 구현하는지에 대한 기본적인 이해를 돕는 내용들이 있다. 내용이 많아서 몇 가지 흥미로운 부분만 발췌해본다.

먼저 Xamarin 플랫폼의 구성요소를 살펴보면 다음과 같다.

  • C# language – Allows you to use a familiar syntax and sophisticated features like Generics, Linq and the Parallel Task Library.
  • Mono .NET framework – Provides a cross-platform implementation of the extensive features in Microsoft’s .NET framework.
  • Compiler – Depending on the platform, produces a native app (eg. iOS) or an integrated .NET application and runtime (eg. Android). The compiler also performs many optimizations for mobile deployment such as linking away un-used code.
  • IDE tools – The Xamarin Studio IDE and the Xamarin plug-in for Visual Studio allow you to create, build and deploy Xamarin projects.

개발툴을 Xamarin Studio(이하 XS)나 Visual Studio(이하 VS)를 사용하는데, Xamarin Studio는 무료 버전에서도 쓸 수 있고 Visual Studio 플러그인은 유료 버전 라이센스가 있어야 한다.

다음은 컴파일이 어떻게 이루어지는지에 대한 설명인데 그냥 참고만 하자.

  • iOS – C# is ahead-of-time (AOT) compiled to ARM assembly language. The .NET framework is included, with unused classes being stripped out during linking to reduce the application size. Apple does not allow runtime code generation on iOS, so some language features are not available (see Xamarin.iOS Limitations).
  • Android – C# is compiled to IL and packaged with MonoVM + JIT’ing. Unused classes in the framework are stripped out during linking. The application runs side-by-side with Java/Dalvik and interacts with the native types via JNI (see Xamarin.Android Limitations).
  • Windows Phone – C# is compiled to IL and executed by the built-in runtime, and does not require Xamarin tools. Designing Windows Phone applications following Xamarin’s guidance makes it simpler to re-use the code on iOS and Android.

iOS는 C#이 ARM assembly language로 컴파일 되는 대신, runtime 코드 생성을 허용하지 않으므로 Generic과 같은 기능 사용에 제약이 있다고 한다. Android는 MonoVM과 JIT’ing이 포함되며, Java/Dalvik과 병행 실행되며, JNI를 통해 네이티브 형식과 상호작용한다. 윈폰은 중간 언어(IL)로 컴파일 후 내장 런타임에 의해 실행되며 별도의 Xamarin 툴이 필요 없다.

다음 도표는 개발 환경에 따른 플랫폼 지원이다.

image

Windows Phone 앱은 Windows-VS(이하 VS)에서만 지원하고, iOS 앱은 Windows-VS에서 개발/배포만 가능하다. 즉, 3가지 플랫폼을 모두 개발하고 테스트하려면 Mac OS X, Windows가 모두 필요하다.

UI 개발의 경우는 Windows에서 3가지 모두 작업할 수 있다. Windows Phone은 VS와 Blend에서 작업 가능하고, 나머지 2가지 플랫폼은 VS와 XS에서 모두 작업 가능하다고 한다.

크로스 플랫폼 앱에서 코드를 공유하는 방식은 3가지 옵션이 있다.

  • 각 앱 프로젝트에 파일 링크 – C# 파일을 하나 만들어서 각 프로젝트에 링크로 추가하는 방법
  • 플랫폼 고유의 라이브러리 프로젝트 – PCL로 구현하기 어려운 경우에, 같은 기능을 하는 라이브러리를 각 플랫폼 별로 구현
  • 포터블 클래스 라이브러리(PCL) – 서로 다른 CLI 플랫폼에서 공용으로 사용할 수 있는 PCL의 사용

솔루션의 구성은 다음과 같이 하는 것을 권장한다.

Shared Code 영역은 Core Project로 만들어서 Business Layer 이하의 공유 코드들을 포함하고, 각 플랫폼 앱 별로 Application Layer/UI Layer를 포함하는 별도의 프로젝트를 구성한다.

Core 프로젝트의 구성 예

Core 프로젝트의 구성 예(Data Layer, Data Access Layer, Business Layer 등을 확인할 수 있다)

Android와 iOS 프로젝트의 구성 예(Application Layer나 UI, Assets 등을 포함하고 있다.)

여기까지 Xamarin의 크로스 플랫폼 앱 개발 기본 및 코드 공유 전략 등을 살펴보았는데, 구체적인 샘플이나 사례를 가지고 살펴봐야 좀 더 실제적인 사용 가능 여부를 파악할 수 있을 듯 하다.

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중