2014年1月22日水曜日

Androidアプリを実機とエミュレータで起動できるようになるまで


AndroidのSDKがそんなに親切ではないので取りあえず起動できるようになるまでをまとめてみた。基本的にはAndroidの公式サイトと後は分からない点を少しぐぐって調べたくらいである。本の手順に従ってダウンロードして設定していくと、アンドロイドはすぐに新しいバージョンが出て記述方法が変わるため、時間のロスが大きい。ドキュメントはかなり整備されているので最初の起動までは公式ドキュメントを読んで設定した方が結果としては理解も増すし速い気がする。ともあれ以下まとめ。

(環境Windows7 64bit PC)
1.SDKのインストール
http://developer.android.com/sdk/index.html#download
一旦ダウンロードしたSDKは新しいパッケージがSDKManager経由でインストール
できるため再度ダウンロードの必要はないとのこと。

==トラブル==
SDKManagerを開こうとしたけども、コンソールを開くとすぐに落ちてしまう。
->find_java.batというファイルがどうもjavaのSDKを見つけてくれないらしい。
そこでJAVA_HOMEをJDKをインストールしたディレクトリを指すようにする。
具体的にはC:\Program Files\Java\jdk1.7.0_17があったので、これを使って開発を行う事にする。
コントロールパネル->システム->システムの詳細設定->環境変数で新規に

変数名:JAVA_HOME
パス:C:\Program Files\Java\jdk1.7.0_17

として登録してやる
これによりSDK Manager.exeが起動できるようになる。

日本語化は必要か?
->チュートリアルは全て英語でフォルダ名などが翻訳されているとかえってわかりにくいので
日本語化の設定はしない方がむしろ良いと思われる。

2. 初回のAndroidアプリの設定を行う。
http://developer.android.com/sdk/installing/bundle.htmlに行く。
zipファイルを解凍し、eclipseをスタートする。
※注意
eclipseやsdkのディレクトリを動かしてしまうとうまく起動できなくなる
ので動かさない事。

3.Androidの最初のアプリを作成しよう。
http://developer.android.com/training/basics/firstapp/index.htmlにいく
ここにチュートリアルが書かれている。

3-1.プロジェクトの作成
http://developer.android.com/training/basics/firstapp/creating-project.html
に行き、まずはプロジェクト作成を行う。
プロジェクトの作成方法はEclipse(with Android Developer Tool plugin)を使ったものと
SDK toolsを使ったものの2種類が紹介されているが、ここではEclipseを使った方法でプロジェクトを作成していくことにする。
Eclipseを使った方法ではADT Pluginがいると書かれている。
因みにADT Pluginとは統合開発環境(IDE)のEclipseにAndroid OS向けの開発環境を追加する
プラグインで、最初にSDKをインストールした時にADTは入っているため新規にインストール
する必要はない。

Create a Project with Eclipseというタイトルの項目にしたがってプロジェクトを
作成していく。詳細は省略するが気になったとこだけ記述。

・Package Nameは自分が所属する組織の逆ドメイン名を使うと良いと記述されている。
逆ドメインとは何か?自分が所属する会社のホームページがdmm.comならばcom.dmm.myfirstapp
みたいなパッケージ名にしろという事が書かれている。
ちなみにデフォルトではcom.example.myfirstappというパッケージ名が付けられるが、
com.exampleではGoogle Playに出すことはできないようである。

・Minimum Required SDKは、サポートしたいアンドロイドのバージョンである。
Androidのバージョン別シェアを下記サイトから確認すると
http://juggly.cn/archives/tag/android%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E5%88%A5%E3%82%B7%E3%82%A7%E3%82%A2
現時点ではGingerbread(Android 2.3以上)をサポートしていれば世の中的に大丈夫という事が言えそう。
どのバージョンまでサポートすべきか?という問いに対しては自分が開発するアプリのコア機能が実現できる最低のバージョンまでサポートしようという事が書かれている。それ以外の、新しいAndroidバージョンになると少し新APIを使って高速化やUIの強化ができる、といった違いはバージョンごとにプログラミングでかき分ける事ができるようだ。
http://developer.android.com/training/basics/supporting-devices/platforms.html
を参考。

・Target SDK
あなたがテストをした中で最も高いVersionのAndroidと書かれている。
Target SDKを指定した場合、指定したSDKのバージョンより先のバージョンでの前方互換性を無効にできます。
1.Android 4.4用のアプリを作成
2.Android 4.2のアプリは前方互換性があるため、Android 4.4の記述を書いていると、それに影響されて
画面のデザインや外観が変わる可能性がある。
3.これをAndroid 4.2独自のものにものにして、画面のデザインや外観を変えたくない場合には前方互換性
を無視する必要がある。
->Target SDKに4.2と指定。これで4.4用のレイアウトが4.2に適用される事がなくなる。
他実例として、Target SDKを Level8に設定するとタブレット等での大画面へ対応しないアプリになるらしい。

まあしかしまだ良くわからんので取りあえず最新にしておけばよいか・・。

Minimum Required SDK及び、targetSdkVersionを変更したくなった場合には
AndroidManifest.xmlを開き、
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" />
の部分を変更してやればよい。

3-2 アプリケーションを実行する。
実行する対象は実機かエミュレーターの2通りがあり、また
Eclipseを使用する。コマンドラインを使用するの2通りの実行のさせ方がある。

・リアルデバイスでの実行方法
1.PCとスマホをUSBケーブルでつなぐ。適切なUSB driverをPCにインストール
する必要がある。ドライバの詳細は
http://developer.android.com/tools/extras/oem-usb.htmlを閲覧との事。
デバイスによってはここがめんどくさいかもしれないが頑張ろう。
2.toolバーの三角ボタンを押してAndroid Applicationとして実行
3.デバイスを選択するとその端末にインストールされる。
4.デバイスの接続を切ってもインストールされたまま残る。

・エミュレータ(AVD:Android Virtual Device)での実行方法
-EclipseのツールバーからAVDManagerを起動し、デバイスを定義して実行。特に難しくない。
しかし、RAMに設定する容量次第では、エミュレータがクラッシュしてしまう事もある。
どうやら768MB以上のRAMを設定すると落ちてしまう可能性があるそうだ。
製品として2GBのメモリーを積んでいるNexus 7を1GBのRAMで動かそうとしたところクラッシュ
してしまった。しかしクラッシュが起こらないようにしようとして1GB->768MBに変更したところ
エミュレータが重すぎていつまでたっても起動しない。3分間たって、ようやく画面が
表示されたかと思えば、アプリが勝手に軌道を終了してしまい、画面を確認することができなかった。

ごついデバイスを低スペックパソコンでエミュレートしようとしたことが間違えだったようだ。
気を取り戻してしょぼいAVDを定義して、それで実行してみようと思う。
AVD_for_WVGA(800*480)という標準的なデバイスを768MBのRAMで定義して、これを実行させる事
にする。これで少しは速くなった。大体2分くらいでEmulatorが起動する。

しかし、こんなノソノソとエミュレータを起動していてはイライラするのでもう少し
速くエミュレータを起動できないかを探していたところ以下のホームページを発見した。
http://www.webtech.co.jp/blog/developer-news/5966/
Android端末のほとんどがARMアーキテクチャのCPUを使用していて、Windows,Macはx86系の
CPUを使用している。即ちARMアーキテクチャからx86系アーキテクチャへの命令変換をCPUで処理しているためこんなに速度が遅くなってしまうのである。そこでIntel atom androidエミュレーターというx86系の命令で動いているAndroidエミュレータがあるのでこれを使用してみる。詳しくは上記のホームページを参照。
なお、intelのHardware_Accelerated_Excution_Managerというものを手動でインストールする必要があるが、
\adt-bundle-windows-x86_64-20131030\sdk\extras\intel\Hardware_Accelerated_Execution_Manager
にexeファイルがある。

その結果・・・起動まで大体1分、さらに動作がサクサク。これならある程度Emulatorでの開発に耐えられそうである。

ところで会社などプロキシを設定している場所だと、インターネットに
繋がってくれない。そのような場合は

Settings->WIRELESS&NETWORKS->More...->Mobile networks->Access Point Names->
T-Mobile USなどのキャリア名をクリックしてとんだ先にプロキシとポートの設定ヵ所があるのでそこにそれぞれ入力する。ただし、一度エミュレータを再起動しないとプロキシ設定が反映されなかった。

3-3 アプリケーションを作成する。
設定部分を本で読むと、情報が古い可能性があるので、ここまでは英語ではあるが公式の
チュートリアルを呼んで進めていった方が良い。ただしここから実際に作成していくパート
になるので日本語書籍で学んで進めていっても良いと思われる。



0 件のコメント:

コメントを投稿