【備忘録】C#(Visual Studio2019)でAndroidアプリを作成しようとしたら躓いた件

昔はかなりお世話になったVisual Studioですが、最近はさっぱり使わなくなってしまいました。完全に浦島太郎状態の初老のBoです。

今回は、C#でAndroidアプリを作った事がない、初老プログラマーが躓いた内容を自分の備忘録として残します。

もしかすると、バリバリのデベロッパーの皆さんには、

バリバリの人の声
草wwww

と思わるかもしれませんが、海外のStack Overflowなどでも的確な解決策が得られなかった内容となります。

Bo
なにせ初心者なので用語の使い方などが間違っている事が多いと思いますがご了承ください。

環境は以下の通りです。

開発環境を整える

マイクロソフトのチュートリアルに従って環境を構築しました。

VSをインストールする時に、「.NETによるモバイル開発」を選択します。

ここまでは、特に問題はないです。

Bo
しかし条件はあるにせよ、Visual Studioが無料で使えるなんて信じられないです。

躓いた問題と解決策

マイクロソフトのクイックスタートチュートリアルに従い作業してみました。

エミュレーターが絶望的に重い

問題の詳細

なんか分かりませんが、エミュレーターを立ち上げてみると、フリーズしてんじゃないかと思うほど、起動するのに時間がかかり、やっと起動したと思っても激重です。デザイナーで作った画面を展開するにも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"

に変更すると、

Bo
直ったぁ!

と思いましたが、チュートリアルにはそんな事は書いていません。。。。

そもそも、@+id/~と、@id/~って、なんだろうと思って調べたら、

プラス記号付きIDは追加、プラス記号無しIDは参照とのことです。

という事らしいので、チュートリアルは正しくて

android:layout_below="@id/textView1"

で動作するべきなのですが、正常動作しません。

不完全 解決策

諦めて、ふて寝しようと思いVSを終了しましたが、なんか気になったのでもう一度、起動してソリューションをロードすると、

なんと!意図した通り、Text (Large) ウィジェットの下にプレーンテキスト ウィジェットが配置されていました!

Bo
何これ!

この状態で、他のウィジェットを配置してみると、今度は意図したとおりに、ウィジェットが配置されます!

Bo
解決したと思ったのですが、追加が上手く行えたウィジェットの下に別なウィジェットを配置しようとすると、(乂∀・)ダメでした。ただし、同じ様にソリューションの読み直し、またはクリーン後のリビルドで正常動作になります。

理由は分かりませんが、コレが解決策です。

理由がわかる方がいらしたら、コメントお願い致します。

Bo
現在、MSDNのフォーラムに質問していますが、コメントは付いていません。java studioというものなら即時にidが適用されるような書き込みをみましたが、そうなんでしょうか?謎。
フォーラムにコメントを頂き、現在のVSではウィジェットの配置に関しては、このような動作になってしまうそうです。回避策としては、あるウィジェットの下に配置する新規のウィジェットのid属性(この場合はandroid: layout_below:)を@+id/~にするという方法かクリーン・リビルドになるようです。

最後に

一番最初に躓いたので、かなりやる気を削がれましたが、先に進めそうなので、もう少し頑張ってみようと思います。

もう少し調査が必要ですね。













シェアしてくれると励みになります!

自作サービスやってます

【無料】宛名メーカー

せどり・メルカリ・ヤフオク・ラクマなどの商品発送の手書きでの宛名書きに疲れた。。。あなた!宛名メーカーは無料でレターパック、スマートレター、定形外郵便などの宛名を簡単に作成できます。是非ご利用下さい!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)