web-dev-qa-db-ja.com

物理iOSデバイスでXamarin.iOSアプリをデバッグする方法

この長い質問については事前に謝罪しましたが、物理デバイス(iPhoneシミュレーターではない)でデバッグできるXamarin.iOS開発環境をセットアップしようとして3日間失敗しましたが、何に困っていますか?次に試す。

私のセットアップはかなり標準的なXamarin構成だと思います:

  • Visual Studio 2015およびXamarin v4.2.0.703を実行するWindows 10 PC
  • Androidデバッグ用にPCにUSB接続されたHTC電話(正常に動作)
  • Xamarin Studio v6.1.1およびXcode v8.0でOS X 10.11を実行しているMacBook
  • iOSデバッグ用にMacにUSB接続されたiPhoneまたはiPad

私はVisual StudioでXamarinソリューションを作成することから始めました。これは、最初にAndroidで開発してデバッグしました。

IOSのデバッグに進むには、XcodeとXamarin StudioでMacをセットアップし、リモートログインを有効にし、Xamarin.iOSアプリと同じバンドル識別子でダミーのXcodeプロジェクトを作成しました。また、アプリの署名IDとプロビジョニングプロファイルを作成し、それらをMacにダウンロード/インストールするというかなり複雑なプロセスも試しました。このプロセスは非常に直感的でない(そしてXcode内の視覚的なフィードバックが非常に悪い)ので、正しく実行したかどうかはわかりません。しかし、iPhoneでダミーのXcodeプロジェクトを実行できるので、大丈夫だと思いますか?

Windows PCでは、Visual Studio設定内のXamarin> iOS Optionsペインで、Visual StudioがMacに接続されており、接続されているiPhoneも候補ターゲットデバイスとしてリストされていることを確認します、そのため、すべてがデバイス上のデバッグ用に設定されているようです。

Visual StudioからiPhoneシミュレーターでアプリをデバッグしようとすると、正しく動作します。ただし、物理的な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.

比較として、Xamarin Studioを使用して、Macで直接デバッグを試みました。繰り返しになりますが、iPhoneシミュレーターは問題なく動作しますが、接続されたiPhoneはDebug | iPhone構成の候補ターゲットデバイスとしてリストされていないため、物理デバイスを使用してデバッグセッションを起動することもできません。

プロジェクトオプションを開いてiOS Debugビューに移動すると、Debug構成に関連付けられているプラ​​ットフォームがiPhoneSimulatorであることがわかります。それをiPhoneに変更して構成を保存すると機能するように見えますが、変更は実際には保存されません。これが私のテストデバイスがリストに表示されていない理由だと思いますが、Xamarin Studioが私の変更を受け入れるようにするために何をする必要があるのか​​分かりません。

したがって、このすべての実験の後で、私は完全に迷っています。このセットアッププロセスのための完全で堅牢なA-Zチュートリアルを用意しておくと役立ちますが、失敗した場合は、次に試してみるべき提案があれば非常にありがたいです。

更新:Ad-Hocプロジェクト構成(Visual StudioまたはXamarin Studioのいずれか)を使用すると、デバイスにアプリが正しくデプロイおよび起動されますが、デバッガーはアタッチされません。アドホックプロジェクト構成で明示的にデバッグを有効にすると、Xamarin Studioはそれを無視しますが、Visual Studioはデバッガーをアタッチしますが、ブレークポイントにヒットしません。これはすべて正しく聞こえますか?実際のDebug configを正しく機能させるために変更する必要がある手がかりはありますか?

8
Tim Coulter

同様の問題に直面している人のために、私が最終的に採用した解決策は「総当たり」のアプローチを伴いました。

(標準のVisual Studioテンプレートを使用して)新しいXamarin.Formsソリューションを作成し、不要なプラットフォームプロジェクト(UWPおよびWindows Phone)を削除することから始めました。この初期状態で、AndroidとiOSデバイス、およびそれぞれのエミュレーター/シミュレーターの両方でデバッグを起動できることを確認しました。すべてが正しく動作し、Macのセットアップが正しいことを確認しましたまた、デバッグに必要な正確なiOSプロジェクト構成を提供します。

この時点では、構成の問題が以前の問題の原因であると想定していたため、元のソリューションの実際の構成の細部を正確に複製しました。それでも、iOSでのデバッグは拒否されました。

次に、参照されたNugetパッケージが問題を引き起こしているのではないかと疑い始めたため、参照されたすべてのパッケージを元の実装から新しいテストソリューションに追加しました。私はこれがiOSのデバッグを壊すと思っていましたが、そうではありませんでした。

最後に、元のソリューションのコンテンツ全体(XAMLと分離コードファイル、ビューモデル、リソースなど)をテストソリューションに慎重に移植しましたが、テストソリューションは正しくデバッグされ続けました。

したがって、実行可能な診断手順がない場合、私はソリューションをゼロから再構築することで問題を効果的に解決しました。コードは変更されておらず、私の知る限り、構成設定も変更されていませんが、新しい実装はすべてのターゲット環境で確実にデバッグ可能です。

1
Tim Coulter