Использование 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).