catalinaの備忘録

ソフトウェアやハードウェアの備忘録。後で逆引きできるように。

Surface RT向けアプリ開発環境の構築

 

SurfaceRT上で自作アプリケーションを動作させる。
ストア向けアプリ開発の最初の一歩。
まずは環境構築から。


と、環境の前にアカウントの取得から。
必要ではないものも含まれているかもなので、
個人のやりたいことに合わせて。

 

まずストア向けアプリの開発が目的なので、Microsoftアカウントを取得しておく。
そして、Microsoftアカウントを開発者登録する。金額は年間¥4900だった。


Microsoftアカウントが必要な理由


WindowsPCからSurfaceにリモートデバッガで接続してアプリのインストールやデバッグをするわけだが、このときに同一のMicrosoftアカウントでログインしておけば、余計な手間が省ける。というのが一番の理由。
図で書くとこんな感じ。

 

ネットワーク構成とアカウント設定

 

f:id:Catalina1344:20130518135042j:plain

 


ソフトウェアの設定

 

ホストPCの構成:
OS:Windows8
開発環境:VisualStudioExpress2012
ログインアカウント:開発者登録してあるMicrosoftアカウント




ターゲット(SurfaceRT)の構成:
デバッグ環境:Remote Tools for Visual Studio 2012
ログインアカウント:開発者登録してあるMicrosoftアカウント

SurfaceRT側にログインするMicrosoftアカウントには管理者権限を与えておくこと。
Remote Toolsをインストールしたり動かすためには管理者権限が必要。

デバッグ用ツールはMicrosoftのサイトからダウンロードする。
ちなみに、32bit版と64bit版とARM版で分かれてる。
surface-RTはARMなので「Remote Tools for Visual Studio 2012 (arm)」をダウンロード。

ここで注意点。
VisualStudioのバージョンにあった「Remote Tools」をダウンロードすること。
最初に試したのが日本語のMicrosoftのサイトから飛ばされたのだが、どうやらバージョンが違うようだった。

Remote Toolsをダウンロードしてインストールする。
ここまででセットアップ完了。

 

デバッグの開始

 

Surface側のデバッグ準備

SurfaceRTのスタートメニュー(MetroUI)に「RemoteDebugge」が表示されているので、選ぶ。

リモートデバッガが起動するので、デバッグする環境を選ぶ。
・ドメインネットワーク(社内ネットワークなど)
・プライベートネットワーク(ホームネットワークや社内ネットワークなど)
・カジュアルネットワークまたは公衆ネットワーク
すべてチェック入っていることを確認して、
「リモートデバッグの構成」ボタンを押す。

ホストPC(Windows8)側のスケルトンアプリの準備

ホストPC側でVisualStudioを起動する。

VisualStudio2012環境でプロジェクトのスケルトンを作成する。
「ファイル」メニューの「新しいプロジェクト」を選択。
画面左のリスト「テンプレート」から「VisualC#」の「Windowsストア」を選択。
アプリの種類一覧が表示されるので、「新しいアプリケーション(XAML)C#」を選択。
パスとプロジェクト名を適当に設定する。

プロジェクトが出来上がったら、「F5」でビルドと実行。
ホストPC上でアプリが起動することを確認したら、アプリを終了する。

 

アプリがSurfaceRT動くように変更する

VisualStudio2012の「プロジェクト」メニューの「App1のプロパティ」を選択。
(App1はプロジェクト名。)
画面左に並んでいるメニューから「デバッグ」を選択。
右カラムに設定項目が表示されるので、「開始オプション」グループの「ターゲットデバイス」を「リモートコンピュータ」にする。
すぐ下の「リモートコンピュータ名」の横にある「検索」ボタンを押す。
Surfaceのコンピュータ名が表示されるので選択する。
Surface側で開発者認証などの情報が出るのでポチポチとOKで進んでいく。


ここでいくつか問題起きたけども、なんとか解決。
原因は分からずじまいだけども、変更した内容と現象だけでも今後のためにメモ。

 

リモートデバッガのトラブルと対策

トラブル
・検索してもリモートコンピュータにSurfaceが見つからない
・SrufaceRT側でRemoteTool起動した時だけ検索ウインドウにSurfaceRTが現れる
・SurfaceRTに接続しようとしても「存在しません」といったエラーが出る


対策
・Windowsアカウントを作ってWindows8, SurafeceRTで同じアカウントを使う。
・SurfaceRTでRemoteToolを動かすアカウントに管理者権限を与える
・RemoteToolのバージョンが古いようだったのでVS2012用を再インストール

たぶんこのどれかが原因だったのだろう。(全部かもしれないけど。)

無事にデバッグ環境が整いました。
一週間以上かかったよorz。


おまけ:DirectX (C++) プロジェクトの場合のリモートデバッグ設定


・「プロジェクト」の「Direct3DAppのプロパティ」を選択。(Direct3DAppはプロジェクト名)
・「プラットフォーム」を「ARM」に設定。
・画面左カラムの「構成プロパティ」の「デバッグ」を選択。
ここで「プラットフォーム ARM」の下にある「起動するデバッガの種類」が「リモートデバッガ」になっていることを確認する。


「コンピュータ名」のところにSurfaceRTのコンピュータ名を入力する。

これでDirectX(C++)アプリのデバッグをSurface上で行うことができる。


注意:
プロジェクトの構成が「Debug」になっている場合は、処理が重い。

以下のサンプルアプリケーションで処理落ちが発生する。
DirectX marble maze game sample」
http://code.msdn.microsoft.com/windowsapps/DirectX-Marble-Maze-Game-e4806345

実機での動きを確認するだけならば、プロジェクトの構成を「Release」にしておく。
サンプルアプリでの処理落ちは起きなくなった。

リモートデバッガが重いのか、埋め込まれているデバッグコードが重いのか。
理由はさておき、アプリの処理速度はPC以上に顕著だということで。