5

Извините, за этот длинный вопрос, но я потратил 3 дня на неудачную попытку настроить среду разработки Xamarin.iOS, которая позволяет мне отлаживать физическое устройство (а не симулятор iPhone), и я в недоумении за то, что попробовать дальше.Как отладить приложение Xamarin.iOS на физическом устройстве iOS

Я считаю, что моя установка вполне стандартная конфигурация Xamarin:

  • для Windows 10 ПК под управлением Visual Studio 2015 и Xamarin v4.2.0.703
  • HTC телефон USB-подключение к ПК для Android отладки (работает отлично)
  • MacBook работает OS X 10,11 с Xamarin студии v6.1.1 и Xcode v8.0
  • iPhone или IPad USB подключенного к Mac для прошивкой отладки

Я начал с создания решения Xamarin в Visual Studio, которое я изначально разработал и отлаживал на Android.

Чтобы перейти к отладке iOS, я настроил Mac с помощью Xcode и Xamarin Studio, включил его для удаленного входа в систему и создал фиктивный проект Xcode с тем же идентификатором пакета, что и мое приложение Xamarin.iOS. Я также попытался создать довольно сложный процесс создания идентификатора подписи и профиля обеспечения для приложения и загрузки/установки на Mac. Этот процесс настолько неинтуитивный (и визуальная обратная связь в Xcode настолько бедна), что я не уверен, что я сделал это правильно. Тем не менее, я могу запустить проект фиктивного Xcode на iPhone, поэтому я предполагаю, что все в порядке?

На компьютере с Windows, то Xamarin>Параметры IOS панели в настройках Visual Studio подтверждает, что Visual Studio подключен к Mac и прилагаемый к нему iPhone также перечислены в качестве кандидата целевого устройства, так что кажется, что все настроен для отладки на устройстве.

Если я попытаюсь отладить приложение на симуляторе iPhone из Visual Studio, он работает правильно. Однако, отладка на физическом iPhone выдает следующее бесполезное сообщение:

Xamarin.Messaging.Exceptions.MonotouchException: error MT1006: Could not install the 
application '/Users/Tim/Library/Caches/Xamarin/mtbs/builds/Test.iOS/c4f40041b6c58fc579a727bccfc18614/bin/iPhoneSimulator/Debug/TestiOS.app' 
on the device 'Tim’s iPhone': AMDeviceSecureInstallApplicationBundle returned: 0xe8008001. 

В качестве сравнения, я также попытался отладки непосредственно на Mac, используя Xamarin Studio. Опять же, симулятор iPhone работает нормально, но невозможно даже запустить сеанс отладки с использованием физического устройства, потому что подключенный iPhone не указан в качестве целевого целевого устройства для Отладка | iPhone конфигурации.

Если открыть параметры проекта и перейдите к IOS отладки зрения, я могу видеть, что платформа связана с конфигурацией Debug является iPhoneSimulator. Меняя его на iPhone и сохраняя конфигурацию, он появляется, но изменения на самом деле не сохранены. Я думаю, что это причина, по которой мое тестовое устройство отсутствует в списке, но я не совсем понимаю, что мне нужно сделать, чтобы Xamarin Studio приняла мои изменения.

Итак, после всех этих экспериментов я полностью потерялся. Было бы полезно иметь полный, надежный учебник A-Z для этого процесса установки, но, в противном случае, любые предложения, которые я должен попробовать, будут очень оценены.

UPDATE: Если я использую конфигурации проекта Ad-Hoc (в любом Visual Studio или Xamarin студии) это правильно разворачивает и запускает приложение на устройстве, но не присоединить отладчик. Если я явно разрешаю отладку в конфигурации Ad-Hoc, Xamarin Studio игнорирует ее, но Visual Studio затем присоединяет отладчик, но не попадает ни в какие точки останова. Все это звучит правильно? Он предлагает какие-либо подсказки, что мне нужно изменить, чтобы получить реальный Debug config для правильной работы?

+0

Не похоже, что вы подготовили свой iPhone/iPad: https://developer.xamarin.com/guides/ios/getting_started/installation/device_provisioning/ – SushiHangover

+0

@SushiHangover: Спасибо. Используя Xcode> Window> Devices, я только что проверил, что на iPhone установлен профиль обеспечения. Я перекрестно проверил установленный профиль в своей учетной записи Apple, и он включает мой идентификатор подписи разработки и перечисляет 3 устройства, одним из которых является iPhone, который я пытаюсь отлаживать. –

+0

Странно .... У нас есть куча андроидов, которые не работают с отладчиком Xamarin (но делают w/A.S.), но никогда не имели проблемы с iOS, если они были подготовлены. Какие версии iOS находятся в iDevices (10?)? – SushiHangover

ответ

1

Для тех, кто сталкивается с аналогичной проблемой, решение, которое я в конечном итоге принял, повлекло за собой подход «грубой силы».

Я начал с создания нового решения Xamarin.Forms (с использованием стандартного шаблона Visual Studio) и удаления нежелательных проектов платформы (UWP и Windows Phone). В этом начальном состоянии я подтвердил, что он смог запустить отладку как на устройствах Android, так и на iOS, а также на их соответствующие эмуляторы/симуляторы. Все работало правильно, подтверждая правильность настройки Mac, а также предоставляя мне точную конфигурацию проекта iOS, необходимую для отладки.

На этом этапе я предположил, что проблема с конфигурацией должна отвечать за мои предыдущие проблемы, поэтому я точно воспроизвел каждую деталь рабочей конфигурации в своем исходном решении. Тем не менее он отказался отлаживать iOS.

Затем я начал подозревать, что связанный пакет Nuget вызвал проблему, поэтому я добавил все связанные пакеты из исходной реализации в новое тестовое решение. Я ожидал, что это сломает отладку на iOS, но это не так.

Наконец, я тщательно пересадил все содержимое моего исходного решения (XAML & файлов с кодом, просмотрел модели, ресурсы и т. Д.) В тестовое решение и продолжал правильно отлаживать.

Таким образом, в отсутствие жизнеспособной диагностической процедуры я эффективно решил проблему, восстановив свое решение с нуля. Никакой код не был изменен, и, насколько мне известно, настройки конфигурации не были изменены, но новая реализация теперь надежно отлаживается во всех целевых средах.

+0

Возможно, вам потребуется настроить профиль подготовки в VS вручную в свойствах проекта IOS в разделе подписи iOS Bundle, как описано в следующей статье: https://developer.xamarin.com/guides/ios/getting_started/installation/device_provisioning/free-provisioning/#Launching_your_App (это 10-й шаг) – nrudnyk