と、アニメはおいといて、iOS に続いて無事 Android の開発環境も俺色に染めてやりましたので、参考にさせてもらった記事と覚え書きでも。
これからはダラダラ書くとか宣言しといて、いきなり胸焼けしそうな長文もどうかと思いますが、こういう真面目のも書きつつ、普段は散文的にダラダラと、という事で。
まずは言われたとおり
いつものパターンで、まずは何も考えず言われたとおりやってみるのが一番です。あ、何も考えずといっても、今させられてる事に何の意味があるのか考えながらね。- Androidで動く携帯Javaアプリ作成入門
- これまた相当古い記事ですが、まあ基礎知識としては問題なさそうだったので (3) くらいまで読んで知りたい事は分かりました。最初に Activity と Intent の概念を丁寧に説明してくれたおかげで内部挙動が想像しやすくなって助かりました。
- Android プログラミング入門
-
上の記事で基本的なアプリの作り方は把握したあと、Java での OpenGL の使い方の記事を探してたら見つけたのですが、とても丁寧で読みやすいページで感心しました。
おかげで OpenGL アプリの枠組みが一発で解決したし、先にこのサイトを見つけてたらここだけで済んでたかも。
これまた丁寧な Java 入門も書かれてるみたいなので、これからもお世話になるかと思います。
で、Java ってどうなのよ
Android アプリは普通は Java で開発します。最近では NDK というのを使って C/C++ だけでの開発も可能になったようで、できれば Java は知らないままスルーしたかったのですが、やっぱ記事を読んでみても、普通の組み方が分かっている事が前提みたいなので、諦めて Java から勉強する事にしました。まああと、プログラマ名乗る人が今時 Java を全く使えないのもシャクなので、この機会に覚えちゃえと。アプレット使えればWeb上でアホゲームとか作れそうだし。
- Java入門
-
呆れるほど親切に基礎から教えてくれる入門ページでした。C++ と Java は構文的にはほぼ一緒とはいえ、自分でゼロから組む際の作法とかは分からんので、ぐぐっで最初に出てきたここで勉強勉強。
初めての Java の感想はー。ポインタを捨てたかったんでしょうけど、全然捨てきれてないのが微笑ましかったです。何も知らない人が素直に納得できるのかなあの概念。
まああとは、C の星から来た人ですので、後始末をさせてくれないのはやはりムズ痒いですね。ゲーム機は常にメモリとの戦いだったので、始末したい時にできないのはすごく不安なのです。
作り方は分かったが、エディタが憎い
Android アプリ開発は、普通は eclipse という統合開発環境 (IDE) を使って行います。IDE には大抵、ソースを打つ手間を省いてくれる便利なエディタが付いているもんですが、前にも書きましたが、僕はアレが大嫌いです。
第一にインデントの趣味が合わないのと、第二に自分がソース打ちながら注目しているあたりにチラチラチラチラチラチラと 「もしかして、あなたが欲しいのコレ?それともこれ?」 みたいのがチラチラチラチラ出てくるのでいあーもう気が散る(嫌がり過ぎです)。
と、元から嫌いなのですが、eclipse 様はソースを打ってる最中から自動でエラーを見つけてくださるので、組む順序によってはソースがエラーの赤線だらけになります。超ウザイです。今ワタシ打ってんのッ!。そのクラスはこれから組むからエラーじゃないのッ!。お願いだから黙っててちょうだいキィーッ!
ということで、例によって例のごとく、ソースは外部のエディターで書き、eclipse は実行ボタンを押すだけのツールに成り下がりましたので、そのための設定項目です。
以下の設定について、まずはメニューから [ウインドウ] > [設定] に入ってからの項目です。あと、うちでは pleiades というプラグインで eclipse を日本語化してるので、日本語表記で失礼します。
- java ファイルをクリックしたら好きなエディタで開く
→ [一般] > [エディター] > [ファイルの関連付け]
ただ、デバッグ中は IDE 上でソースを開いた方が便利なので、これは僕は設定していません。
- 外部エディターでのソース変更を即座に反映させる
→ [一般] > [ワークスペース] で以下をチェック
・自動的にビルド
・ネイティブ・フックまたはポーリングを使用してリフレッシュ
「アクセス時にリフレッシュ」 もチェックした方がいいかもしれませんが、今のところなくても困ってません。
エミュレータ遅すぎて話になんない
iOS の時と同様、Android の実機がなくともエミュレータを使ってアプリの開発はできるのですが、これがビックリするくらい遅いです。メニューで操作するようなアプリならともかく、OpenGL は何もしなくても処理落ちしまくってマトモにフレーム数を維持できないので、ゲーム開発はちょっと無理です。幸い、ウチには 実機 があるのでそれを使えばいいんですが、世間の人はどうしてるのかと調べてみたら、仮想PCに x86 用の Android を入れて仮想接続してデバッグ という荒業が流行ってるみたいです。本家もそうしてくれよ。
話すと長くなるので、これはまた次の記事で。
その他の罠
- 記事のサンプルどおり打ち込んだのにエラー出る
-
あちこちの記事で公開されているサンプルコードを打ち込んでいると、@Override のところで 「正しくオーバーライドしろ、もしくはこの @Override は必要ない」 みたいなエラーが出ることがあります。
これは、Java コンパイラ 1.6 以上を使って書かれたソースを、eclipse の初期設定である Java コンパイラ 1.5 でビルドした際に起きるエラーのようです。詳しくは以下。 解決するには、言われたとおり @Override を消すか、eclipse の設定を変えて Java コンパイラを 1.6 以上にするかですが、コンパイラを設定できる箇所は2箇所あります。- [ウインドウ] > [設定] > [Java] > [コンパイラー]
eclipse 全体の設定です。Android 以外の Java 開発にも影響してしまうと思うので、Android 以外も扱う人は注意。そもそも実際に使われるのは下の設定なので、ここ変えても意味ないです。 - プロジェクトを右クリックして [プロパティー] > [Javaコンパイラー]
こっちが実際にビルドに使われる設定で、こっちを変えないと意味がありません。プロジェクトごとの設定なので、新しいプロジェクトを作るたび 1.5 から変更しないといけません。デフォルト設定はないんだろうか?
- [ウインドウ] > [設定] > [Java] > [コンパイラー]
- 開発する Android のバージョン変えたのに無視される
-
Android はバージョンが多数あるので、最低限どのバージョンの Android で動作するアプリなのかをプロジェクトの作成時に決めます。
この設定は後でも変えられるのですが、変更する場所が2箇所あって、両方とも変更しないと正常に起動できません。- プロジェクトを右クリックして [プロパティー] > [Android]
実際にビルドするバージョンの設定です。一見これだけ変えればよさそうなのですが、重要なのは次の設定でした。 - プロジェクトの AndroidManifest.xml を編集
実機上のアプリの起動時には、この情報を見て起動できるか否か判定するようで、こちらが正しく設定されていないと門前払いされて起動できません。設定する値は上の設定の一覧表にある 「APIレベル」 の値ですね。
この設定が間違ってる場合、起動できないならすぐ気付くのでまだいいのですが、起動しちゃいけない機種でも起動できてしまう事もあって危なっかしいので、上の設定と連動して自動で変わって欲しいなぁ。
- プロジェクトを右クリックして [プロパティー] > [Android]