Использование mtouch для объединения приложений Xamarin.iOS в пакет
Приложения iPhone поставляются в виде пакетов приложений. Это каталоги с расширением .app
, содержащие код и данные приложения, файлы конфигурации и манифест, из которых iPhone сможет получить сведения о приложении.
Преобразование исполняемого файла .NET в приложение выполняется в основном с помощью команды mtouch
. При этом интегрируется множество действий, необходимых для создания пакета приложения. Это средство также позволяет запустить приложение в симуляторе и развернуть программное обеспечение на настоящем устройстве iPhone или iPod Touch.
Изучите страницу руководства по mtouch(1), где описаны все варианты использования этого средства.
На компьютере Mac Xamarin.iOS входит в пакет mtouch
. Расширение можно найти в следующей папке:
/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/bin.
Для удобства использования mtouch
добавьте родительский каталог в переменную среды PATH
для своей системы.
Например, в Bash добавьте в конец файла ~/.bash_profile следующую строку:
export PATH=$PATH:/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/bin
Предупреждение
Для работы с mtouch
не следует оставлять /Developer/MonoTouch/usr/bin. Это символическая ссылка, которая указывает на /Library/Frameworks/Xamarin.iOS.framework/Versions/Current/bin. Она используется, только чтобы обеспечить совместимость более ранних выпусков MonoTouch, которые не установлены в /Library/Frameworks/... . Возможно, в следующем выпуске ссылка будет удалена.
Команда mtouch
позволяет компилировать код тремя разными способами:
- компиляция для тестирования на симуляторе;
- компиляция для развертывания на устройстве;
- развертывание исполняемого файла на устройстве.
Самый распространенный и часто используемый сценарий на начальных этапах работы — это проверка приложений в симуляторе. Для нее вам нужно скомпилировать код в пакет для симулятора с помощью mtouch -sim
. Это выполняется следующим образом:
$ mtouch -sim Hello.app hello.exe
Чтобы создать пакет программного обеспечения для устройства, скомпилируйте приложения с параметром mtouch -dev
, указав также имя сертификата для подписи этого приложения. Ниже показано, как скомпилировать приложение для устройства:
$ mtouch -dev -c "iPhone Developer: Miguel de Icaza" foo.exe
В этом примере мы используем для подписи приложения сертификат разработчика iPhone с именем Мигель де Иказа (Miguel de Icaza). Это очень важный шаг, без него физические устройства не будут загружать приложение.
После создания пакета приложения запуск в симуляторе выполняется очень просто:
$ mtouch --sdkroot /Applications/Xcode.app -launchsim Hello.app
Если не задан флаг --sdkroot
, для него по умолчанию будет установлено значение пути xcode-select, что приведет к появлению следующего предупреждения:
eg: warning MT0061: No Xcode.app specified (using --sdkroot), using the system Xcode as reported by 'xcode-select --print-path': /Applications/Xcode.app/Contents/Developer (предупреждение MT0061: не указан параметр Xcode.app с помощью ключа --sdkroot, используется системное значение Xcode, возвращаемое командой '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 об управлении устройствами. Подготовив устройство, разверните на нем скомпилированные APP-файлы с помощью команды mtouch. Для этого ее нужно выполнить следующим образом:
$ mtouch —sdkroot /Applications/Xcode.app -installdev=MyApp.app
Если не задан флаг --sdkroot
, для него по умолчанию будет установлено значение пути xcode-select, что приведет к появлению следующего предупреждения:
eg: warning MT0061: No Xcode.app specified (using --sdkroot), using the system Xcode as reported by 'xcode-select --print-path': /Applications/Xcode.app/Contents/Developer (предупреждение MT0061: не указан параметр Xcode.app с помощью ключа --sdkroot, используется системное значение Xcode, возвращаемое командой 'xcode-select --print-path': /Applications/Xcode.app/Contents/Developer).
Эти действия обычно выполняются с помощью Visual Studio для Mac.
Сведения о других параметрах командной строки см. на странице документации по команде mtouch(1).