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) 설명서 페이지를 참조하세요.