Android とストレージ領域

Android は端末によって SD カードの扱いが結構ばらばらです。
設定画面に表示される用語も端末ごとに異なっています。

                 OS   内部Flash  内部メディア領域   SDカード
-------------------------------------------------------------------
Desire X06HT     2.2   147MB     無し               /sdcard
ZEN Touch2(8GB)  2.1   2.95GB    4.10GB  /sdcard    /extsd
ZiiO 7 (8GB)     2.1   1.97GB    4.94GB  /sdcard    /sdcard/SD_CARD
LuvPad AD100     2.2   1.62GB    12.95GB /sdcard    /sdcard2

上の 内部Flash は /data の容量です。

Android のデータ領域は 2種類あります。
本体内蔵の内部ストレージと取り外し可能な外部ストレージです。

ダウンロードしたアプリケーションは主に内部ストレージにインストールされます。

外部ストレージは主に撮影した写真等のメディアデータが格納されます。
共有しても問題ないデータ、あとから生成する容量の大きいデータはこちらが
使われることが多いようです。
また OS 2.2 からは外部ストレージへインストールできるアプリもあります。

◎内部ストレージ /data
・本体内蔵のフラッシュメモリのうちデータ用の領域
・ダウンロードしたアプリケーションは主にこちらにインストールされる
・USB 接続時に PC から見えない

◎外部ストレージ /sdcard
・共有可能なデータが格納される
・取り外し可能
・OS 2.2 からは対応アプリケーションならインストールできる
・USB 接続時に PC から直接アクセスできる。(一時的に Unmount される)

●SD カードとの関係

iPod touch のように、本体にもメディア用の大容量なフラッシュメモリを
内蔵している場合に少々複雑になります。
内蔵のメディア用フラッシュ領域が /sdcard が割り当てられるものの、
同時に本来の SD カードスロットも存在しているからです。

ZEN Touch 2 / ZiiO 7 は設定画面からも両方の容量を確認可能です。
PC 接続時には内蔵のメディア領域と SDカードの 2つのドライブが作られます。

LuvPad の場合は基本的に内蔵のメディア領域を使うことが前提となっているようです。
SD カード側のマウントには再起動が必要で PC から見えるのも内部の
メディア領域のみです。

大容量の内蔵フラッシュを持たない Desire X06HT の場合はシンプルです。
もともとこのような使われ方を想定していたのだと思われます。

内蔵のメディア領域を持っている場合、外付けの SD カードがなくても運用
できますが容量は固定となります。
SD カードは別領域にマウントされるため /sdcard そのもののは変わりません。

●アプリケーション

端末によっては内部ストレージがかなり小さく、アプリケーションの
インストール時に容量が足りなくなることがあります。

2.2 からは SDカードへもインストールや移動ができるようになりましたが
その対応度はアプリケーションに依存します。

この点においては、取り外し不可能な単一領域の大容量フラッシュを内蔵
している iOS の方が分かりやすく開発側の負担も少なくなっています。

◎アプリケーションを SDカードインストール対応にする方法

AndroidManifest.xml に1行追加。auto または preferExternal


実際に HTC Desire X06HT (2.2 Froyo) で Market から Angry Birds を
ダウンロードしてみると SD カードにインストールされました。
おそらく preferExternal が指定されているのだと思われます。

また前回ベンチマークテストに用いた GPUBench も SD カードに入ります。
このアプリは当初 LuvPad (2.2) や ODROID-S (2.2) にはインストールすることが
出来ずしばらくはまりました。

 設定→「SDカードと端末容量」→「SDカードのアンマウント」

でアンマウントしてからだとインストール出来ることがわかりました。
この場合は内部ストレージに入ります。

もしかしたら Market が使えないか、何らかの認証されていないデバイスでは
SD カードにアプリケーションをインストール出来ないのかもしれません。
そのため preferExternal が設定されたアプリケーションはインストールに失敗し、
管理画面からも SD カードに移動出来なくなっていると考えられます。

関連エントリ
各種 Android 端末のベンチマークテスト (2)
各種 Android 端末のベンチマークテスト