Xamarin이란?What is Xamarin?

iOS 및 Android에서 예제 Xamarin 응용 프로그램의 스크린샷Screenshots of example Xamarin application in iOS and Android

Xamarin은 .NET을 사용 하 여 iOS, Android 및 Windows 용 최신 및 고성능 응용 프로그램을 빌드하기 위한 오픈 소스 플랫폼입니다.Xamarin is an open-source platform for building modern and performant applications for iOS, Android, and Windows with .NET. Xamarin은 기본 플랫폼 코드와 공유 코드의 통신을 관리 하는 추상화 계층입니다.Xamarin is an abstraction layer that manages communication of shared code with underlying platform code. Xamarin은 메모리 할당 및 가비지 수집과 같은 편리 하며을 제공 하는 관리 되는 환경에서 실행 됩니다.Xamarin runs in a managed environment that provides conveniences such as memory allocation and garbage collection.

개발자는 Xamarin을 사용 하 여 플랫폼 간에 평균 90%의 응용 프로그램을 공유할 수 있습니다.Xamarin enables developers to share an average of 90% of their application across platforms. 이 패턴을 통해 개발자는 모든 비즈니스 논리를 단일 언어로 작성할 수 있습니다 (또는 기존 응용 프로그램 코드를 다시 사용할 수 있음). 하지만 각 플랫폼에서 네이티브 성능, 모양 및 느낌을 달성할 수 있습니다.This pattern allows developers to write all of their business logic in a single language (or reuse existing application code) but achieve native performance, look, and feel on each platform.

Xamarin 응용 프로그램은 PC 또는 Mac에 작성 하 고 Android의 .apk 파일 또는 iOS의 ipa 파일 등의 네이티브 응용 프로그램 패키지를 컴파일할 수 있습니다.Xamarin applications can be written on PC or Mac and compile into native application packages, such as an .apk file on Android, or an .ipa file on iOS.

참고

IOS 용 응용 프로그램을 컴파일 및 배포 하려면 현재 MacOS 컴퓨터가 필요 합니다.Compiling and deploying applications for iOS currently requires a MacOS machine. 개발 요구 사항에 대 한 자세한 내용은 시스템 요구 사항을 참조 하세요.For more information about development requirements, see system requirements.

Xamarin에 대 한 대상Who Xamarin is for

Xamarin은 다음과 같은 목표를 가진 개발자를 위한 것입니다.Xamarin is for developers with the following goals:

  • 플랫폼 간에 코드, 테스트 및 비즈니스 논리를 공유 합니다.Share code, test and business logic across platforms.
  • Visual Studio C# 를 사용 하 여 플랫폼 간 응용 프로그램을 작성 합니다.Write cross-platform applications in C# with Visual Studio.

Xamarin 작동 방식How Xamarin works

Xamarin 아키텍처 다이어그램

다이어그램은 플랫폼 간 Xamarin 응용 프로그램의 전반적인 아키텍처를 보여 줍니다.The diagram shows the overall architecture of a cross-platform Xamarin application. Xamarin을 사용 하면 각 플랫폼에서 네이티브 UI를 만들고 플랫폼 간에 공유 되 C# 는의 비즈니스 논리를 작성할 수 있습니다.Xamarin allows you to create native UI on each platform and write business logic in C# that is shared across platforms. 대부분의 경우 응용 프로그램 코드의 80%는 Xamarin을 사용 하 여 공유할 수 있습니다.In most cases, 80% of application code is sharable using Xamarin.

Xamarin은 .NET ECMA 표준을 기반으로 하는 .NET Framework 오픈 소스 버전인 Mono위에 빌드됩니다.Xamarin is built on top of Mono, an open-source version of the .NET Framework based on the .NET ECMA standards. Mono는 .NET Framework 자체와 거의 같은 기간 동안 있었으며 Linux, Unix, FreeBSD 및 macOS를 비롯 한 대부분의 플랫폼에서 실행 됩니다.Mono has existed for almost as long as the .NET Framework itself, and runs on most platforms including Linux, Unix, FreeBSD, and macOS. Mono 실행 환경에서는 메모리 할당, 가비지 수집 및 기본 플랫폼과의 상호 운용성과 같은 작업을 자동으로 처리 합니다.The Mono execution environment automatically handles tasks such as memory allocation, garbage collection and interoperability with underlying platforms.

플랫폼별 아키텍처에 대 한 자세한 내용은 xamarin.iosxamarin.ios를 참조 하세요.For more information about platform-specific architecture, see Xamarin.Android and Xamarin.iOS.

추가 된 기능Added features

Xamarin은 기본 플랫폼의 기능을 결합 하 고 다음을 비롯 한 다양 한 기능을 추가 합니다.Xamarin combines the abilities of native platforms and adds a number of features, including:

  1. 기본 sdk에 대 한 완전 한 바인딩 – Xamarin에는 IOS 및 Android의 거의 모든 기본 플랫폼 sdk에 대 한 바인딩이 포함 됩니다.Complete binding for the underlying SDKs – Xamarin contains bindings for nearly the entire underlying platform SDKs in both iOS and Android. 또한 이러한 바인딩은 강력한 형식이므로 탐색 및 사용하기 쉽고 개발 중에도 강력한 컴파일 시간 형식 확인을 제공합니다.Additionally, these bindings are strongly-typed, which means that they’re easy to navigate and use, and provide robust compile-time type checking and during development. 강력한 형식의 바인딩은 런타임 오류 및 고품질 응용 프로그램을 더 줄입니다.Strongly-typed bindings lead to fewer runtime errors and higher-quality applications.
  2. 목적-C, Java, C 및 C++ Interop – Xamarin은 목표-c, java, c 및 C++ 라이브러리를 직접 호출 하 여 광범위 한 타사 코드를 사용할 수 있는 기능을 제공 합니다.Objective-C, Java, C, and C++ Interop – Xamarin provides facilities for directly invoking Objective-C, Java, C, and C++ libraries, giving you the power to use a wide array of third party code. 이 기능을 사용 하면 목적-C, Java 또는 C/C++로 작성 된 기존 IOS 및 Android 라이브러리를 사용할 수 있습니다.This functionality lets you use existing iOS and Android libraries written in Objective-C, Java, or C/C++. 또한 Xamarin은 선언적 구문을 사용 하 여 네이티브 목표 C 및 Java 라이브러리를 바인딩할 수 있는 바인딩 프로젝트를 제공 합니다.Additionally, Xamarin offers binding projects that allow you to bind native Objective-C and Java libraries using a declarative syntax.
  3. 최신 언어 구문 – Xamarin 응용 프로그램은 동적 C#언어 기능, 람다, LINQ, 병렬 프로그래밍, 제네릭 등의 함수형 생성자와 같은 목적-C 및 Java에 비해 크게 향상 된 기능을 포함 하는 현대적인 언어로 작성 됩니다.Modern language constructs – Xamarin applications are written in C#, a modern language that includes significant improvements over Objective-C and Java such as dynamic language features, functional constructs such as lambdas, LINQ, parallel programming, generics, and more.
  4. 강력한 BCL (기본 클래스 라이브러리) – Xamarin 응용 프로그램은 강력한 XML, 데이터베이스, SERIALIZATION, IO, 문자열 및 네트워킹 지원과 같이 포괄적이 고 간소화 된 기능을 갖춘 강력한 클래스 컬렉션인 .net BCL을 사용 합니다.Robust Base Class Library (BCL) – Xamarin applications use the .NET BCL, a large collection of classes that have comprehensive and streamlined features such as powerful XML, Database, Serialization, IO, String, and Networking support, and more. 기존 C# 코드를 앱에서 사용 하기 위해 컴파일할 수 있습니다 .이를 통해 BCL 이외의 기능을 추가 하는 수천 개의 라이브러리에 액세스할 수 있습니다.Existing C# code can be compiled for use in an app, which provides access to thousands of libraries that add functionality beyond the BCL.
  5. 최신 ide (통합 개발 환경) – Xamarin은 코드 자동 완성, 정교한 프로젝트 및 솔루션 관리 시스템, 포괄적인 프로젝트 템플릿 라이브러리, 통합 소스 제어 등의 기능을 포함 하는 최신 Ide 인 Visual Studio를 사용 합니다.Modern Integrated Development Environment (IDE) – Xamarin uses Visual Studio, a modern IDE that includes features such as code auto completion, a sophisticated project and solution management system, a comprehensive project template library, integrated source control, and more.
  6. 모바일 플랫폼 간 지원 – Xamarin은 IOS, Android 및 Windows의 세 가지 주요 플랫폼에 대 한 정교한 플랫폼 간 지원을 제공 합니다.Mobile cross-platform support – Xamarin offers sophisticated cross-platform support for the three major platforms of iOS, Android, and Windows. 응용 프로그램을 작성 하 여 최대 90%의 코드를 공유할 수 있으며, Xamarin.ios는 세 플랫폼 모두에서 공통 리소스에 액세스 하는 통합 API를 제공 합니다.Applications can be written to share up to 90% of their code, and Xamarin.Essentials offers a unified API to access common resources across all three platforms. 공유 코드는 개발 비용과 모바일 개발자를 위한 출시 시간을 크게 줄일 수 있습니다.Shared code can significantly reduce both development costs and time to market for mobile developers.

Xamarin.AndroidXamarin.Android

Xamarin Android 아키텍처 다이어그램Xamarin.Android architecture diagram

Xamarin Android 응용 프로그램은에서 C# IL (중간 언어) 로 컴파일됩니다. 그러면 응용 프로그램이 시작 될 때 네이티브 어셈블리에 JIT (just-in-time) 컴파일됩니다.Xamarin.Android applications compile from C# into Intermediate Language (IL) which is then Just-in-Time (JIT) compiled to a native assembly when the application launches. Xamarin Android 응용 프로그램은 Android Runtime (ART) 가상 머신과 함께 Mono 실행 환경에서 실행 됩니다.Xamarin.Android applications run within the Mono execution environment, side by side with the Android Runtime (ART) virtual machine. Xamarin은 Android. * 및 Java. * 네임 스페이스에 .NET 바인딩을 제공 합니다.Xamarin provides .NET bindings to the Android.* and Java.* namespaces. Mono 실행 환경은 MCW (관리 되는 호출 가능 래퍼) 를 통해 이러한 네임 스페이스를 호출 하 고, Acw (Android 호출 가능 래퍼 )를 아트에 제공 하 여 두 환경에서 서로 코드를 호출할 수 있도록 합니다.The Mono execution environment calls into these namespaces via Managed Callable Wrappers (MCW) and provides Android Callable Wrappers (ACW) to the ART, allowing both environments to invoke code in each other.

자세한 내용은 Xamarin Android 아키텍처를 참조 하세요.For more information, see Xamarin.Android architecture.

Xamarin.iOSXamarin.iOS

Xamarin.ios 아키텍처 다이어그램Xamarin.iOS architecture diagram

Xamarin.ios 응용 프로그램은에서 C# 네이티브 ARM 어셈블리 코드로 컴파일된 AOT (전체) 입니다.Xamarin.iOS applications are fully Ahead-of-Time (AOT) compiled from C# into native ARM assembly code. Xamarin은 선택기 를 사용 하 여 관리 되는 C# C# 코드를 등록 기관 에 노출 하 고 관리 되는 코드를 목표-c에 노출 합니다.Xamarin uses Selectors to expose Objective-C to managed C# and Registrars to expose managed C# code to Objective-C. 선택기 및 등록 기관를 통칭 하 여 "바인딩" 이라고 하며, 목표- C# C와의 통신을 허용 합니다.Selectors and Registrars collectively are called "bindings" and allow Objective-C and C# to communicate.

자세한 내용은 xamarin.ios 아키텍처를 참조 하세요.For more information, see Xamarin.iOS architecture.

Xamarin.EssentialsXamarin.Essentials

Xamarin.ios는 네이티브 장치 기능에 대 한 플랫폼 간 Api를 제공 하는 라이브러리입니다.Xamarin.Essentials is a library that provides cross-platform APIs for native device features. Xamarin 자체와 마찬가지로, Xamarin은 네이티브 기능에 액세스 하는 프로세스를 간소화 하는 추상화입니다.Like Xamarin itself, Xamarin.Essentials is an abstraction that simplifies the process of accessing native functionality. Xamarin.ios에서 제공 하는 기능의 몇 가지 예는 다음과 같습니다.Some examples of functionality provided by Xamarin.Essentials include:

  • 장치 정보Device info
  • 파일 시스템File system
  • 가속도계Accelerometer
  • 전화 걸기Phone dialer
  • 텍스트 음성 변환Text-to-speech
  • 화면 잠금Screen lock

자세한 내용은 xamarin.ios를 참조 하세요.For more information, see Xamarin.Essentials.

Xamarin.FormsXamarin.Forms

Xamarin.ios는 오픈 소스 UI 프레임 워크입니다.Xamarin.Forms is an open-source UI framework. Xamarin.ios를 사용 하면 개발자가 단일 공유 코드 베이스에서 iOS, Android 및 Windows 응용 프로그램을 빌드할 수 있습니다.Xamarin.Forms allows developers to build iOS, Android and Windows applications from a single shared codebase. Xamarin.ios를 사용 하면 개발자가의 C#코드 숨김으로 XAML로 사용자 인터페이스를 만들 수 있습니다.Xamarin.Forms allows developers to create user interfaces in XAML with code-behind in C#. 이러한 사용자 인터페이스는 각 플랫폼에서 성능의 네이티브 컨트롤로 렌더링 됩니다.These user interfaces are rendered as performant native controls on each platform. Xamarin.ios에서 제공 하는 기능의 몇 가지 예는 다음과 같습니다.Some examples of features provided by Xamarin.Forms include:

  • XAML 사용자 인터페이스 언어XAML user-interface language
  • 데이터 바인딩Databinding
  • 제스처Gestures
  • 효과Effects
  • 스타일 지정Styling

자세한 내용은 xamarin.ios를 참조 하세요.For more information, see Xamarin.Forms.

시작Get started

다음 가이드는 Xamarin을 사용 하 여 첫 번째 앱을 빌드하는 데 도움이 됩니다.The following guides will help you build your first app using Xamarin:

Channel 9YouTube에서 더 많은 Xamarin 비디오를 찾습니다.Find more Xamarin videos on Channel 9 and YouTube.