mtouch를 사용하여 Xamarin.iOS 앱을 번들로 묶기

iPhone 애플리케이션은 애플리케이션 번들로 제공됩니다. 애플리케이션 번들은 iPhone이 애플리케이션에 대해 배우기 위해 사용하는 코드, 데이터, 구성 파일 및 매니페스트를 포함하는 .app 확장이 포함된 디렉터리 입니다.

.NET 실행 파일을 애플리케이션으로 바꾸는 프로세스는 대부분 애플리케이션을 번들로 바꾸는 데 필요한 여러 단계를 통합하는 도구인 mtouch 명령을 통해 이루어집니다. 이 도구는 시뮬레이터에서 애플리케이션을 시작하고 실제 iPhone 또는 iPod Touch 디바이스에 소프트웨어를 배포할 때도 사용됩니다.

자세한 지침

mtouch 도구의 가능한 모든 사용법이 포함된 mtouch(1) 설명서 페이지를 확인하세요.

설치

Mac에서 mtouch는 Xamarin.iOS와 함께 번들로 제공됩니다. 다음 디렉터리에서 찾을 수 있습니다.

/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/bin

mtouch를 사용하기 편리하도록 만들려면 시스템의 PATH 환경 변수에 부모 디렉터리를 추가합니다.

예를 들어, Bash에서 이를 수행하려면 ~/.bash_profile 파일의 끝에 다음 줄을 추가합니다.

export PATH=$PATH:/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/bin

Warning

mtouch를 사용하려면 /Library/Frameworks/Xamarin.iOS.framework/Versions/Current/bin을 가리키는 바로 가기 링크인 /Developer/MonoTouch/usr/bin을 사용하지 마세요. 이 바로 가기 링크는 /Library/Frameworks/...에 설치되지 않은 이전 MonoTouch 릴리스와 호환성을 유지하기 위해서만 존재하며, 향후 릴리스에서는 사라집니다.

빌딩

mtouch 명령은 세 가지 방법으로 코드를 컴파일할 수 있습니다.

  • 시뮬레이터 테스트용 컴파일.
  • 디바이스 배포용으로 컴파일.
  • 실행 파일을 디바이스에 배포.

시뮬레이터용으로 빌드

시작할 때 가장 일반적으로 사용되는 시나리오는 시뮬레이터에서 애플리케이션을 사용해 보는 것이며, 따라서 여러분은 mtouch -sim 명령을 사용하여 코드를 시뮬레이터 패키지로 컴파일하게 될 것입니다. 이 작업은 다음과 같이 수행합니다.

$ mtouch -sim Hello.app hello.exe

디바이스용으로 빌드

디바이스용 소프트웨어를 빌드하려면 mtouch -dev 옵션을 사용하여 애플리케이션을 빌드해야 하며, 또한 애플리케이션을 서명하는 데 사용되는 인증서의 이름을 제공해야 합니다. 다음은 디바이스용 애플리케이션을 빌드하는 방법입니다.

$ mtouch -dev -c "iPhone Developer: Miguel de Icaza" foo.exe

이 예에서는 "iPhone Developer: Miguel de Icaza" 인증서를 사용하여 애플리케이션을 서명합니다. 이 단계는 매우 중요하며, 이 단계를 거치지 않으면 물리적 디바이스에서 애플리케이션 로드를 거부합니다.

애플리케이션 실행

시뮬레이터에서 시작

애플리케이션 번들이 있으면 시뮬레이터에서 시작하는 방법은 매우 간단합니다.

$ mtouch --sdkroot /Applications/Xcode.app -launchsim Hello.app 

--sdkroot 플래그를 설정하지 않으면 xcode-select 경로가 기본값으로 사용되어 다음과 같은 경고가 표시됩니다.

예: warning MT0061: No Xcode.app specified (using --sdkroot), using the system Xcode as reported by 'xcode-select --print-path': /Applications/Xcode.app/Contents/Developer

위의 명령줄은 다음과 같은 출력을 생성합니다.

Launching application
Application launched
PID: 98460
Press enter to terminate the application

또한 디버깅에 도움이 되도록 표준 출력 및 표준 오류 파일의 로그를 보관할 것을 강력하게 권장합니다. Console.WriteLine의 출력은 stdout으로 이동하고, Console.Error.WriteLine의 출력 및 기타 런타임 오류 메시지는 stderr로 이동합니다.

이렇게 하려면 --stdout--stderr 플래그를 사용합니다.

../../tools/mtouch/mtouch --launchsim=Hello.app --stdout=output --stderr=error

애플리케이션이 실패할 경우 출력 및 오류를 살펴보고 문제를 진단할 수 있습니다.

디바이스에 배포

디바이스에 배포하려면 Apple의 관리 디바이스 문서에 설명된 대로 디바이스를 프로비전해야 합니다. 디바이스가 올바르게 프로비전되면 mtouch 명령을 사용하여 컴파일된 ".app"을 디바이스에 배포할 수 있습니다. 이 작업은 다음 명령을 사용하여 수행합니다.

$ mtouch —sdkroot /Applications/Xcode.app -installdev=MyApp.app

--sdkroot 플래그를 설정하지 않으면 xcode-select 경로가 기본값으로 사용되어 다음과 같은 경고가 표시됩니다.

예: warning MT0061: No Xcode.app specified (using --sdkroot), using the system Xcode as reported by 'xcode-select --print-path': /Applications/Xcode.app/Contents/Developer

다음 단계는 일반적으로 Mac용 Visual Studio에서 수행됩니다.

참조

다른 명령줄 옵션에 대한 자세한 내용은 mtouch(1) 설명서 페이지를 참조하세요.