2013年8月23日金曜日

AVDのconfig.ini

AVD上でメニューキーを押してApps一覧を開くと
「Unfortunately, Launcher has stopped.」
とかいって落ちる件.

特に,仮想のDeviceとしてNexus 7を選択した時に起きるという報告がよくされている模様.

Deviceは特定機種を仕様を想定した各種設定値のプリセットにすぎないので,
この問題はNexus 7固有のものってわけじゃないはず.

解決策としては,AVDのconfig.iniをテキストエディタで開いて
設定値を手でいじるというのが出回ってます.
config.iniの場所は以下.
~/.android/avd/{avd_name}/config.ini
というかAVDのイメージとかスナップショットとかもこのドットディレクトリの中に入ってるんですが.
重いバイナリをローカルにしれっと隠さないでくれよなー頼むよー(懇願)

で,以下の2項目を更新します.



1. RAMのサイズを増やす

hw.ramSize=1024MB

Sizeの単位は基本的には指定しなくてもMBとして読まれるらしいのですが,
1000を越えると何やら誤認するのかな?
ということで、既にセットされている数字の末尾に明示的に「MB」をつけてやるだけで
解決するみたいです.

Android AVD Manager上で該当AVDの構成をエディットすると,
config.iniが書き換えられる際に「MB」が取れちゃうみたいなので注意.

2. ヒープメモリを増やす

vm.heapSize=64MB

ヒープって何だっけ?
…というあたりで俺の素人っぷりがうかがい知れると思いますが.
ヒープソートのヒープか?とか思ってたら

Wikipedia - ヒープ
ヒープ領域(ヒープりょういき)とはコンピュータープログラミングにおいて、動的に確保可能なメモリの領域。ヒープ (heap) とは、『山積み』という言葉の中の『山』をさす英単語である。データ構造のヒープとは直接的な関係は無い。 
関係なかった.

つまりCでいうmallocで取ってくるような領域か.

先のramSizeにhw(hardware)というプリアンブルがついてるのに対して,
こちらはvm(virtual machine).
つまりvm.heapSizeってのは、

Android Virtual Device上で動いてるAndroid OSが使うJava Virtual Machineの
ヒープ領域として確保されるサイズ

…ってことですよね?たぶん。
1つのアプリケーションから見て1つのVMが割り当てられるときの,
そのVMのヒープサイズって理解していいんですかね。間違ってたら誰か教えて.


まぁ,なんやかんや苦労してみたところで、実機のNexus 7につなぐと動作サックサクだったので
互換性チェックとかをする前段階なら,実機でテストするほうが快適だな.
そうなってくるとデバック環境としてどのくらい便利かって話になってくると思うけど、
そのへんはまた追い追い.


0 件のコメント :

コメントを投稿