[C#] 모바일 프로그램(Android, IOS)을 개발하는 방법(Xamarin, Cross-platform)


Development note/C#  2021. 3. 3. 16:25

안녕하세요. 명월입니다.

 

이 글은 C#으로 모바일 프로그램(Android, IOS)을 개발하는 방법(Xamarin, Cross-platform)에 대한 글입니다.

 

예전에는 C#은 Window Server나 윈도우 OS 기반 PC에서만 돌아가는 프로그램을 작성할 수 있었습니다. 쉽게 이야기하면 Window 전용 프로그램 언어였습니다.

그런데 언제부터인가 .Net Framework에서 벗어나 .Net Core의 프레임워크가 발표되면서 Window 환경을 벗어나서 리눅스에서도 구축이 가능한 언어로 발전되었습니다. 그러면서 지금 기준으로 약 3년전 (2018년)에 처음 오픈 프로젝트 Xamarin의 크로스 플렛폼가 MS에 흡수되면서 본격적인 cross-platform 프로젝트로 발전하기 시작했네요.

Cross-platform이라는 것은 예전에는 안드로이드 어플을 개발하게 된다면 IOS용 프로그램도 만들어야 하고 PC에서도 사용하려면 PC용 프로그램도 따로 만들어야 합니다. 즉, 안드로이드는 Java, 윈도우는 C++(MFC)나 C#, IOS는 Object-C로 개발을 해야 한다는 뜻입니다.

범용 프로그램을 만들려고 하면 적어도 3개 이상의 언어를 운용해야 한다는 뜻이기도 하고, 같은 내용을 세 번 개발해야 하는 것의 문제가 발생하게 됩니다.

Cross-platform으로 개발을 하게 되면 하나의 언어로 한 번의 개발로 Build 툴에 따라 PC용, 안드로이드용, IOS용 프로그램을 작성할 수 있다는 뜻입니다. 즉, C#만 알면 PC용, Android용, IOS용을 다 개발할 수 있습니다.

 

Visual studio에서 Xamarin을 설정하는 것은 예전에는 따로 설치를 했었는데, Visual Studio 2019버전 부터는 옵션으로 포함되어 있기 때문에 따로 설치할 것은 없습니다.

 

먼저 Visual studio 설치합니다.

링크 - [C#] 01. Visual Studio 설치하는 방법

 

그리고 Visual Studio를 설치할 때나 혹은 이미 설치되어 있는 경우는 Installer를 통해 설치합니다.

설치가 끝나면 Visual Studio를 실행합니다.

 

실행하고 새로운 프로젝트를 생성하게 되면 Android App를 개발할 수 있는 템플렛이 보입니다.

예로 Mobile App의 프로젝트를 시작합니다.

간단한 Hello world를 만들어 보고 싶기 때문에 Flyout를 선택하고 프로젝트를 시작합니다.

그리고 처음 프로젝트를 설치하게 되면 Android SDK를 설치하겠냐는 팝업이 발생합니다.

그리고 Accept(동의)를 눌러서 진행하게 되면 Visual Studio 왼쪽 아래 상태 바에서 SDK를 설치하는 것을 보이게 됩니다.

참고로 이 설치가 완료되기 전에는 아직 디버깅(Debugging)이 되지 않을 것입니다.

SDK 설치가 완료가 되면 상단에 Android Emulator라고 디버깅 버튼이 생기게 될 것입니다.

그리고 디버깅 버튼을 누르게 되면 Android 디버깅용 에뮬레이터를 설치하게 됩니다. 먼저 설치 전에 라이센스 동의 화면이 생성되는 데 그냥 동의 눌러서 진행하면 됩니다.

저는 Pixel2의 구글 폰의 에뮬레이터가 설치가 되었습니다.

그리고 옆의 개시 버튼을 누르게 되면 화면에 스마트폰 이미지가 생기면서 에뮬레이터가 실행됩니다.

그리고 다시 Visual Studio 화면으로 돌아와서 아까전의 Debugging 버튼을 보면 Android Emulator가 아닌 에뮬레이터 이름으로 바뀌게 된 것을 확인할 수 있습니다.

이제 위 버튼을 누르면 실행하면 Xamarin의 기본 템플릿이 표시가 됩니다.

우리는 화면에 Hello world를 보고 싶기 때문에 소스를 조금 수정합니다.

Views 폴더에서 아이템을 하나 추가하는데 Content Page를 추가합니다. 이름은 Hello.xaml로 추가했습니다.

그리고 Hello.xaml를 수정합니다.

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="App1.Views.Hello"
             Shell.NavBarIsVisible="False">
  <ContentPage.Content>
    <StackLayout>
      <Label Text="Hello world"
             VerticalOptions="CenterAndExpand" 
             HorizontalOptions="CenterAndExpand" 
             FontFamily="Arial" 
             FontAttributes="Bold" 
             TextColor="Black"/>
    </StackLayout>
  </ContentPage.Content>
</ContentPage>

그리고 AppShell.xaml로 이동합니다. AppShell은 메뉴 아이템을 설정하는 곳이라고 생각하면 됩니다.

중간에 내려보면 Flyout도 있고 MenuItem도 있습니다만 Shell.Resources로 탭 바로 밑에 우리가 추가한 Hello를 설정합니다.

<TabBar>
  <ShellContent Route="Hello" ContentTemplate="{DataTemplate local:Hello}" />
</TabBar>

그리고 재컴파일하고 에뮬레이터로 빌드를 합니다.

Hello world가 표시되었습니다.

(IOS도 확인해 보고 싶은데 Mac PC가 필요한 것 같습니다. ㅠㅠ 제가 Mac PC가 없습니다.)

 

이제 개발이 끝났으면 진짜 스마트폰에서 실행이 되는 지 확인해야 합니다.

먼저 Android 옵션에 들어가서 Shared Runtime을 해제해야 합니다.

그리고 프로젝트에서 오른쪽 클릭으로 Archive를 클릭합니다.

그러면 APK 리스트 보이는데 아래의 Distribute 버튼을 눌릅니다.

그러면 채널 선택 화면이 나오고 우리는 Google Play에 등록할 것은 아니기 때문에 Ad Hoc를 선택합니다.

그리고 Identity 등록 화면이 나옵니다.

그리고 간단하게 +버튼을 누르고 일단 간단하게 적습니다.

그리고 최종 Save as를 누르게 되면 apk파일이 만들어지게 됩니다.

제 개인 스마트폰에서도 실행이 되는 것을 확인할 수 있습니다.

 

저도 한 8년 전에 잠깐 Android 개발을 한 적이 있었는데.. 개인적으로 그닥 안건도 많이 없고 이래저리 시간을 놓쳐서 최근에는 모바일 쪽은 개발이 없다시피 합니다. Web으로 반응형이나 Web앱은 많이 개발해 보았으니 실제 앱은 많이 없습니다.

그런데 이런 Cross-platform 형식의 툴이 있다고 하면 개인적으로 접근하기도 매우 편할 듯 싶기도 하고 예전에 Android를 다룰때 xml의 레이아웃 파일이 많아서 조금 다루기가 까다롭다고 생각한 적이 있습니다만, C#은 Window Form처럼 레이아웃도 코드로 컨트럴이 가능한 듯 싶으니 아무래도 개발하기 매우 편할지도 모르겠습니다.

 

출처 - https://docs.microsoft.com/en-us/xamarin/android/

 

여기까지 C#으로 모바일 프로그램(Android, IOS)을 개발하는 방법(Xamarin, Cross-platform)에 대한 글이었습니다.

 

궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.