2016年3月21日月曜日

Androidアプリ開発記 その2(Hell Word)

先週から始めたAndroidアプリ、今日は実機につなげてサンプルをちょっといじるところまでやってみます。

とりあえずやってみる。

Android Studioを起動して、さっそく新プロジェクトを"Blank Activity"で作ってみる。

まずはコードを何もいじらずにエミュレーターで動かしてみると…
エミュレーターうごかないよ!

エミュレーターを動かすにはKVMが必要らしい。
確かUbuntuでは最初から使えた気がするけど、Gentooだと設定しないとムリっぽい。
Wiki見てカーネルの設定とかやっても/dev/kvmが出てこない。

………。
まあいいや。実機でやろう。

とはいえ、ちょっといじるたびに実機につなぐのも面倒なので、そのうちちゃんとエミュレーターを使えるようにしたいです。

実機につなげてみた。

まずは実機でデバッグできるように、設定→端末情報の「ビルド番号」をタップしまくる。
端末情報の上に「開発者向けオプション」が出てくるから、その中の「USBデバッグ」を有効にすればOK。

あとは公式ドキュメントを見て/etc/udev/rules.d/51-android.rulesをつくる。

そしてUSBで実機とPCをつなげてみると。
insufficient permissions for deviceってなんだよ!

どうやらADBのデーモンはroot権限で起動していないとダメっぽい。
$ adb kill-server
$ sudo adb start-server
これでいけた。

Android Studioを終了するときにデーモンも道連れにするみたいなので、起動のたびに実行しないとダメらしい。
それも面倒なので、問答無用でroot権限で起動するように、setuidを使ってみた。
# chown root path/to/adb
# chmod u+sx path/to/adb
一応これで動くようになったけど、こんなことやっていいのかな。

Gradle Build Running

ちなみにUbuntuでやってみると、今度はビルドが終わらない
"Gradle Build Running"と出たまま一向に終わらない。Android Studioも終了できないので、プロセスを強制終了するしかない。

調べてみると、設定の"Build, Execution, Deployment"→"Build Tools"→"Gradle"の"Offline work"にチェックを入れるといいらしいとのこと。

そこで、チェックを入れてもう一度ビルドしてみると…やっぱりおわらない
なんなんだよこれ( ಠ_ಠ)

ログのメッセージをもとにもう一度調べてみると、やっぱり同じ悩みを持っている人がいるようです。これによると、
$ sudo apt-get install libncurses5:i386 libstdc++6:i386 zlib1g:i386
これでいけるらしい。本当だろうな◔_◔

キタ━━━━(゚∀゚)━━━━!!

やっとできた。とりあえずUbuntuではエミュレーターで動作確認までいけました。そのうちGentooでもやってやります。

多言語対応してみた。

サンプルコードをただ動かすのも面白くないので、多言語対応してみることにしました。

文字列リソースはvalues/strings.xmlの中にありますが、values-ja/strings.xmlというファイルを新しく作って、前者に英語、後者に日本語のメッセージを入れていきます。

あとは、ソースコードやレイアウトエディタのメッセージ部分をリソースIDに置き換えるだけ。

できあがり。

そして作ってみたのがこれ。まずは英語版。



英語版というか、設定で言語を日本語以外にするとだとこうなります。
そして日本語にするとこんなかんじ。



まずは習作ということでこれくらいにしておきます。今度はもうちょっと役に立つやつを作ってみよう。

1 件のコメント:

  1. In addition to their normal duties, a full stack developer can freelance!

    Because most full stack development organisations do not allow their staff to take on freelance jobs, a full stack developer
    employed in a 9 to 5 position is hesitant to embark on freelancing projects or tasks. By enabling freelancers to remain anonymous on their platform, Eiliana provided a solution to this dilemma.

    返信削除