スマホを持っていないIT企業戦士(笑)が突然Android Studioを渡されたときに陥りそうな罠に対して備えよう。
わからんけど解説とか流し読みで動かしてみよう。
という人間がひっかかったポイント。
スマホ未所持無関係のものも入れます。
引っかかったら都度追記
動作環境
- Windows7 Professional 64bit
- Android Studio 1.5.1
- Java SE Development Kit 7u80
エミュレーターが高速になるらしいAndroid Studio2がよかったのですが、
ZIP版しかなかったりで流石に不安なので1.5.1で。
事前知識状態
- PHPerでPhpStorm 使ってる(関係なし)
-
Javaについて
- Hello Worldを授業でやった
ただし環境構築経験無し - 静的言語
- オブジェクト指向
- 別のクラスはimportして使う
- Hello Worldを授業でやった
-
Androidについて
- り りろんはしってる
- 無料なの
- アプリ公開無料なの
- 美味しそうなバージョン名
- 端末テスト面倒くさい
今の内容は別にJavaもAndroidも関係ないですが。
省略
Android StudioとJavaのインストール。
環境変数JAVA_HOMEで躓くのは既定路線。
解説は豊富にあるのでそちらで。
Android StudioはSDK付きのフルパッケージのインストーラーを使った。
Android StudioとJavaのbit数は合わせること。
【不明】SDK Managerの準備
あるAndroidバージョンを開発する際に、最低限何が必要なのかはまだ不明です。
基本的には解説サイトで推奨されているものは、容量に問題がないかぎりは入れてしまっています。
消せないわけでもないので、あまり気にせず。
HAXMの準備
intel x86 emulator accelerator(以下HAXM)を入れます。
こちらも解説は豊富にありますが、何を見たかを。
HAXMを導入するとエミュレーターの起動が早くなります。
適用準備(Android Studioの準備とHAXMのインストール)
Intel HAXMのインストールと設定 - 0円で1から始めるAndroid開発記
こちらがわかりやすい。
わかりにくいのが、Android StudioのSDK ManagerからインストールするHAXMは、「Intel x86 Emulator Accelerator (HAXM installer)」です。
SDK ManagerではInstalledと表示されますが、インストーラーのダウンロードが完了しただけです。
インストーラーの実行は手動になります。
インストーラーの設置場所は、Android SDKの場所の配下になるのですが、
これがいくつかの解説で
Android SDKを保存したフォルダ内に、IntelHaxmのインストーラーが入っています。
Intel HAXMのインストールと設定 - 0円で1から始めるAndroid開発記
Android SDKがインストールされたディレクトリをANDROIDSDK_HOMEとしたら、
ANDROIDSDK_HOME\extras\intel\Hardware_Accelerated_Execution_Manager
内の「IntelHaxm.exe」をダブルクリック。
と、場所がよくわからない…
SDKのインストール先は自由なのかもしれませんが、場所を忘れてしまって困りました。
Android StudioにおけるAndroidSDKやJDKのパス設定 - Qiita
こちらの記事のおかげで助かりました。
余談ですが、この記事をリンクしている記事が同様に構築メモ類が多いので、参考になるかもしれません。
自分の様に流し読みをして、Settingsを開きながら無い!無い!と言わないように。
Fileメニューが、PhpStormではSettingsとDefault Settingsで内容はほぼ同じ。
Andoid StudioではSettingsとProject StructureとOther Settings(の中にDefault Settings とDefault Project Structure)
があり、参照すべきは(Default)Project Structureの方。
インストーラー実行時に、既にHAXMがプリインストールされていたことが判明しましたが、バージョンがかなり古かったので、そのまま上書きしてバージョンアップしました。
Mac版でよければこちら
Androidエミュレータは遅い!重い!!Intel x86設定で高速化して使うべし | サクッとJava研修室
Macということで見逃していたのですが、インストール後に読むと、Windows版と大きな違いはなく、画像ありでよくまとまっているのでおすすめです。
エミュレーターの起動の注意点
ここまでは特にガラケーの有無は関係なかったです…。
そのまま先に押しても大丈夫なのですが、実行には先にエミュレーターを起動しなければいけません。(起動操作は割愛)
エミュレーターの起動というものがよくわかっていない。
とりあえずのファイル準備から起動までを
Androidのお勉強 第一回 環境構築と画面遷移 - Qiita
を参考にしていたのですが(ただしエミュレーターはGenymotionではなく標準機能を使っていた)、アプリのインストールがうまくいかない。
エミュレーターは起動しているのに…
なんて思っていましたが、これはまだAndroidの起動が完了していません。
エミュレーターの起動≠エミュレートしたAndroidの起動 です
予測ではまだ電源オフ状態です。
特にHAXMを入れていないとこの状態が10分以上続くことがあるので、
画面が変わらないし終わったのかな?と勘違いしやすいです。
この辺は記事ではなく動画で見ていればよかったかもしれません。
この辺り、真っ暗なので動いているかわからないのですが、
心配な人はタスクマネージャーなどからエミュレーターの頑張り(CPU使用率)などを見つめて応援しましょう。
メモリ4Gだと重くてネットサーフィンもできません(スマホでのネットサーフィンも当然できません)
androidとロゴが出てきました。まだ起動は完了していません。
これは、電源が入ってOSを起動している状態…でしょうか。
遅いでしょうが、ロゴ色が変化していくはずなので、
真っ黒のときと違って「あぁ、動いてはいるんだな」となりますね。
さらにしばらく待って…
ホーム画面が表示されました。
以上でエミュレーターによるAndroidの起動が完了です。(場合によってはオンラインになるのにもう少し時間がかかるかもしれません)
画面を見たときは感動したんですが、
おめでとうございます。あなたのスマホ電源投入処女はエミュレーターです。
と言われた気がして勝手に悲しくなりました。
これでAndroid Studioからアプリをラン(エミュレーターにインストール)できるわけです。
ここまでこぎつくまで私は
「エミュレーターとはアプリのみをエミュレートするものだ」
と思っていましたが、Androidそのものをエミュレートするんですねぇ…
道理で重いわけだ。
Nuexus S API 7 の場合の注意点
さて、前章画面はNexus S API 23のものなのですが、
これではアプリの実行がうまく行きました。
しかし、他のAPIでも試してみようとしたとき、また一つ詰まったので紹介。
これも実機を触ったことがある人には当たり前なのかもしれません。
また、他のデバイスは全然試してないので他にも同じものがあるかもしれません。
起動後の画面です。
余談ですが、これはCPUがarmでHAXMが効きませんが、起動は高速でした。
起動したのでさっそくRUNボタンを押します。
起動中のNexusを選択してしばらく待つと‥
02-09 05:05:18.487 209-216/? E/AndroidRuntime: ERROR: thread attach failed
というエラーが出て、アプリが実行されません…
ネットで調べてみても、adb.exe
を再起動すれば行けるとかあったのですが、効かず。
途方に暮れてエミュレーターをフリックして遊ぶかと操作したら解決しました。
何が問題だったかと言うと、端末がロック状態だったのがいけなかったみたいです。
鍵アイコンを右にスワイプ?して解除すると…
裏ではしっかりアプリが動いていました。
ロックされていたらアプリは動かない。
ガラケーでも当たり前でしょうけど、全然わからなかった…
VCSからのインポート
Eclipseで作ったらしいアプリがあるらしく、それをインポートしようとしたのですが、場所に困った。
恐らく、ディレクトリツリーをProjectに切り替え、
app/src/main
がアプリ本体だと思われます。
Abdroidツリーがどうやって決まっているのかはまだ謎です。
そして、インポート時の注意としてPhpStormのときにいつもしているように、空のプロジェクトを作ってそこにインポートしようとしたのです。
ですが、Android Studioでは空プロジェクトでも雛形ができていました。
まぁ、良い目印だろうとファイルのインポート先の場所も最初からあるAndroidManifest.xmlが重なる様に設定したのですが、
インポート前からあるファイルは(特に設定をいじらなければ)上書きインポートされないようで、最初からあるAndroidManifest.xmlなどを削除しないと、ファイルをうまく持ってこれませんでした。
解析反映 リソースの更新
空の状態からレイアウトを作ってJavaファイルを書いていると
setContentView(R.layout.activity_main);
のR
やactivity_main
が赤文字で警告になります。
曰くgotoできなかったりで未定義であると。
プロジェクトに設置したリソースをプログラムの中から利用するため、各リソースにはリソースIDが割り当てられます。リソースIDは「R.java」と言う名前のファイルで管理されます。
「R.java」ファイルは初めてプロジェクトをビルドした時に作成され、その後ビルドが行われるたびに自動的に更新されていきます。その為、ユーザーはリソースの追加だけを行っておけばリソースに対するIDの管理などは行う必要がありません。
R.javaファイルとリソースID - リソース管理 - Android入門
つまり、最初はビルドしていないのでR.java
がそもそもなくてR
がエラー。
レイアウトなどでIDを追加しても、R.java
に反映されていないのでR.layout.hoge
でエラー。と。
インタプリタ言語(とその言語のIntelliJ IDEAとか)を触っていると ん?となるかもしれません。
いや、IDEなんだからそこは補完しよろ、とも一瞬思っちゃいましたが。
Gradleとの同期、ということでビルドないない言ってましたが、Gradleがビルドツールですと。
jsでいうgulp、と考えればいいのでしょうか。
ワンクリックで済みますし、エラーはビルド時点で通知してくれるので、
エラーチェックにはエミュレーターを毎度起動しないと行けないのか…
と戦々恐々してた身にはいい感じに気持よく使えそうです。
やっぱりコンパイルは安心感がありますね。
ビルドが済むと、即座に反映され、エラーが消えてgotoも出来るようになりました。