たきるブログ

C#やOracleなどの情報を書いています。

【Xamarin】Xamarin.FormsでHelloWorld

Xamrin.FormsでHelloWorldしてみる。

作成

  1. Cross-Platformにあるクロスプラットフォームアプリ(Xamarin.Formsまたはネイティブ)を選択してプロジェクトを作成する。
    作成すると、どういう画面なの?ってのとUWPのバージョンは?って聞いてくるから、画像のように。 f:id:metroit:20170521221010p:plainf:id:metroit:20170521221102p:plainf:id:metroit:20170521221105p:plain

  2. ソリューションからソリューションのNuGetパッケージの管理を選択して、Xamarin関係のパッケージを更新する。
    この時、互換性がないぞっていうエラーになるなら、Xamarin.Formsだけ更新する。
    (更新パッケージとして出てきたけど、Xamarin.Formsに適用されてないから互換性がないって状態)
    更新が終わったらちゃんと再起動すること。 f:id:metroit:20170521221323p:plainf:id:metroit:20170521221326p:plainf:id:metroit:20170521221329p:plainf:id:metroit:20170521221332p:plain

  3. 一度ソリューションのリビルドをする。
    実際はAndroidプロジェクトのみがリビルトされる。 f:id:metroit:20170521221508p:plain

  4. HelloWorldプロジェクトに、Forms Blank Content Page XamlでGreetPage.xamlを追加する。 f:id:metroit:20170521221611p:plainf:id:metroit:20170521221614p:plainf:id:metroit:20170521221622p:plain

  5. GreetPage.xamlに、Buttonを配置する。 Clicked属性は、Clicked=あたりまで入力するとインテリセンスが効くので、その状態でTabを押すとイベントハンドラを自動で作成してくれる。 f:id:metroit:20170521221812p:plain

  6. GreetPage.xaml.csで、作成されたイベントハンドラ内にコードを記述する。 f:id:metroit:20170521221816p:plain
  7. App.xaml.csのコンストラクタで、GreetPageクラスをMainPageとするよう記述を変更する。
    f:id:metroit:20170521221937p:plain

Android

予め作っておいたエミュレーターを指定して実行すると、動くで。 f:id:metroit:20170521222210g:plain

iOS

  1. Mac側のシステム環境設定 → 共有 -> リモートログインから、リモートログインを許可しておく。 f:id:metroit:20170521223046p:plainf:id:metroit:20170521223056p:plain

  2. なぜか画像が壊れているので、下記パスから画像を引っ張り出して上書きする。
    上書き先はD:\HelloWorld\HelloWorld\HelloWorld.iOS\Resources(ドライブレターとかは適宜読み替え)。

    • C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Xamarin\Xamarin\4.2.2.11\T\~PC\PT\CSharp\Cross-Platform\Native.PCL.zip\Native.PCL.Template.iOS\Resources\Images.xcassets\AppIcons.appiconset
    • C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Xamarin\Xamarin\4.2.2.11\T\~PC\PT\CSharp\Cross-Platform\Native.PCL.zip\Native.PCL.Template.iOS\Resources\Images.xcassets\LaunchImage.launchimage  
  3. スタートアッププロジェクトに設定する。 f:id:metroit:20170521222610p:plain

  4. InitializeComponent()をコメントアウトする。
    実はApp.xaml.csのコンストラクタに記されてあるInitializeComponent()が邪魔。

  5. ツール → iOS → Xamarin Mac エージェントを選択して、Macと接続する。
    Mac側でリモートログインの是非ダイアログが出る場合は許可する。 f:id:metroit:20170521223220p:plainf:id:metroit:20170521223229p:plainf:id:metroit:20170521223234p:plainf:id:metroit:20170521223253p:plain

  6. リビルドする。 f:id:metroit:20170521223353p:plain

  7. iPhoneSimulatorを選択して、使いたいエミュレーター(iPhone6なのか、iPhone7なのか)を選択した上で実行する。 f:id:metroit:20170521223513p:plainf:id:metroit:20170521223519g:plain

iOSでリビルドができない場合

  • コンピュータ名 にインストールされたXamarin.iOS(バージョン 10.8)がローカル Xamarin.iOS(バージョン 10.10)と互換性がありません。 f:id:metroit:20170521223921p:plain MacにインストールされてるXamarinが古いので、Mac側のXamarin Studioから一式更新する。
    Visual Studio for Macでも同じかな?

  • Mac 名前のないサーバー(255.255.255.255)にインストールされたXamarin.iOS(バージョン 10.8)がローカル Xamarin.iOS(バージョン 10.10)と互換性がありません。 f:id:metroit:20170521224013p:plain Mac側のXamarinを更新した後、Visual Studioを再起動しないと出るっぽい。
    Visual Studioを再起動すると解消される。

とりあえずこれで細かいことを気にしないで、『とりあえず何か動いた』状態まで持っていけるので、これから望むものに作り上げていく。