Android 4.2のストレージ構成
    を調べてみました
 2012/12/15 第12回 つ部 ミーティング兼忘年会
            @nagakenjs
ICSのストレージ構成

      本体メモリ



     /data/media



    /mnt/sdcard
JB4.2のストレージ構成
     本体メモリ



   /data/media
                      0    /storage/emulated/0

/mnt/shell/emulated        /storage/emulated/legacy

                      10   /storage/emulated/10
Android 4.2の変更点
• マルチユーザー機能
Androidのストレージの定義

• system/core/rootdir/init.rc

• device/asus/tilapia/init.tilapia.rc

• frameworks/base/core/res/res/xml/storage_list.xml

• device/asus/tilapia/overlay/frameworks/base/core/res/res/xml/
 storage_list.xml
どこで設定してるん?
困ったときのソース検索
やっと見つけた

      あれ、dalvik?
JB4.2のストレージ構成
     本体メモリ



   /data/media
                      0       /storage/emulated/0

/mnt/shell/emulated           /storage/emulated/legacy

                      10      /storage/emulated/10



                          ここはdalvikVMで設定
つまりどういうこと?
                                                   dalvik VM
                                 アプリAのプロセス

アプリA                    /storage/emulated/0
                                                   アプリA
起動開始
                                                   起動

                        /storage/emulated/legacy
                 fork

        zygote

                                 アプリBのプロセス
                 fork
                        /storage/emulated/0
アプリB                                               アプリB
起動開始                                               起動

                        /storage/emulated/legacy
これがあるとどうなるの?

• アプリ作る上では気にする必要はありません。


• ちゃんとAPI使ってれば大丈夫!


• Environment.getExternalStorageDirectory()とか


• 困るのは端末作ってる人たち。
おまけ

• ソース解析に役立つツール


• find   & xargs & grep

 • やっぱり基本はコマンドライン


• Androidソースコード検索サービス

 https://sites.google.com/site/devcollaboration/codesearch

第12回 つ部 ミーティング兼忘年会 LT資料