昔はかなりお世話になったVisual Studioですが、最近はさっぱり使わなくなってしまいました。完全に浦島太郎状態の初老のBoです。
今回は、C#でAndroidアプリを作った事がない、初老プログラマーが躓いた内容を自分の備忘録として残します。
もしかすると、バリバリのデベロッパーの皆さんには、
と思わるかもしれませんが、海外のStack Overflowなどでも的確な解決策が得られなかった内容となります。
環境は以下の通りです。
- Window10 Pro 64bit
- Visual Studio Community 2019 (以下VS)
- Xamarin.Android
開発環境を整える
マイクロソフトのチュートリアルに従って環境を構築しました。
VSをインストールする時に、「.NETによるモバイル開発」を選択します。
ここまでは、特に問題はないです。
躓いた問題と解決策
マイクロソフトのクイックスタートチュートリアルに従い作業してみました。
エミュレーターが絶望的に重い
問題の詳細
なんか分かりませんが、エミュレーターを立ち上げてみると、フリーズしてんじゃないかと思うほど、起動するのに時間がかかり、やっと起動したと思っても激重です。デザイナーで作った画面を展開するにも100万年くらいかかり、動作も不安定で、この時点でエミュレーターを使った開発は無理?もしかして、Androidの実機を用意する必要がある?と、やる気を失くしました。
解決策
チュートリアルの「エミュレーターのパフォーマンスのためのハードウェア高速化 (Hyper-V と HAXM)」を実施すると、ビックリするほど軽快になりました。
可能な環境を持っていれば、まず実施した方が良さそうです。
Android Designerでレイアウトの表示がおかしい
問題の詳細
空のアプリを生成した後に、ソリューション エクスプローラーで Resources フォルダーを展開してから layout フォルダーを展開して、 activity_main.axml をダブルクリックして、Android Designer で開いても、チュートリアルの様なレイアウト(デザインサーフェイス)が表示されない。
解決策
どうやら、ソリューションを保存するフォルダに日本語が含まれているのが原因のようです。この他にもビルドの時などにも、ファイルが見つからない的なメッセージが表示されていましたが、フォルダ名から日本語を追放すると直りました。
ウィジットの配置が説明通りにならない
問題の詳細
チュートリアルの従って、ツールボックスからText (Large) ウィジェットをドラッグして、次にプレーンテキスト ウィジェットを先程のText (Large) ウィジェットの下に配置しようとしても、重なってしまう。
試行錯誤
どうやら、これは
android:layout_below
="@id/textView1
"
が効いていない状態だと分かりました。
調べると、海外のStack Overflowなどでも、多分同じ症状を訴えている書き込みがあり、そこには「ソリューションのクリーンを実施したら直る」的な事が書いてあったり、他には、上のウィジェットの属性がandroid:layout_height=”match_parent”になっているのが原因では?
というコメントや解決策の提案が多く見受けられました。
まず、ソリリューションのクリーンを試しましたが、直りませんでした。
それから、Text (Large) ウィジェットの属性は
android:layout_width="wrap_content"
android:layout_height="wrap_content"
となっており、該当しません。
ちなみに、Text (Large) ウィジェットのidが
android:id="@+id/textView1"
で
プレーンテキスト ウィジェットでのlayout_belowの値を
android:layout_below="@id/textView1"
から
android:layout_below="@+id/textView1"
に変更すると、
と思いましたが、チュートリアルにはそんな事は書いていません。。。。
そもそも、@+id/~と、@id/~って、なんだろうと思って調べたら、
プラス記号付きIDは追加、プラス記号無しIDは参照とのことです。
という事らしいので、チュートリアルは正しくて
android:layout_below="@id/textView1"
で動作するべきなのですが、正常動作しません。
不完全 解決策
諦めて、ふて寝しようと思いVSを終了しましたが、なんか気になったのでもう一度、起動してソリューションをロードすると、
なんと!意図した通り、Text (Large) ウィジェットの下にプレーンテキスト ウィジェットが配置されていました!
この状態で、他のウィジェットを配置してみると、今度は意図したとおりに、ウィジェットが配置されます!
理由は分かりませんが、コレが解決策です。
理由がわかる方がいらしたら、コメントお願い致します。
最後に
一番最初に躓いたので、かなりやる気を削がれましたが、先に進めそうなので、もう少し頑張ってみようと思います。
もう少し調査が必要ですね。