Navigation Log - なびろぐ -
2012/11/16

...X680x0 spirit inside...

この日記はGNSで生成しています。
この日記の画像はOPTPiX webDesigner Ver.4で生成しています。

hauN
Go amazon.co.jp

■ご注文リストから■ [一覧]
■Amazonギフト券■ [購入]
京*かのこ 2 (花とゆめコミックス) []
京*かのこ 2 (花...
Amazonほしい物リスト


2012/11/16 (金) 晴時々曇

Android4.2マルチユーザー (Android)

_ ということで、4.2で導入されたマルチユーザーの動作検証など。とりあえずセカンダリユーザーでnicoWnnGが落ちるのを確認。

_ LogCatで追ってみると、SQLite DBの新規オープンで例外が出ている。何してるか追うにはrootする必要があるなーということで、意を決してNexus7のunlockとroot化作業。

  • ユーザーデータ実体は /data/data/[package]/ から /data/user/[user]/[package]/ へ変更になってて、そこから /data/data/[package]/ へリンクされるようになっている。
  • ただし、 /data/data/[package]/ そのものはリンクじゃないので、 /data/data/[package]/ へ書いちゃったデータはプライマリユーザーしか読めないし、セカンダリユーザーはそこへのアクセスができない。nicoWnnGは /data/data/[package]/ にユーザー辞書データを設置する構造になっているため、サブユーザーではユーザー辞書データの作成に失敗して落ちる、ということが判明。
  • 対策は、 /data/data/[package]/ へ保存しないといけないようなデータは「Context#getDir(subdir)」か「Context#getDatabasePath()」あたりで得られるフォルダを使うようにすること。なお前者は /data/user/[user]/[package]/package_subdir 、後者は /data/user/[user]/[package]/Databases を返す。

_ おまけ。 /sdcard/ や /mnt/sdcard/ は /mnt/shell/emulated/[user]/ をリンクするようになっており、Environment#getExternalStorageDirectory()やEnvironment#getExternalStoragePublicDirectory()はユーザー個別のフォルダを返すようになっている。Nexus7は「ファイルシステムにmount/unmount可能な外部ストレージ(SDカードなど)」がないため、「ユーザー間で共有できるデータ置き場」は内部にはなさそう。


[URL] [View Log()] [Trackback]
Name: Comment:



メールはこちらへ...[後藤浩昭 / Hiroaki GOTO / GORRY / gorry@hauN.org]

「表紙へ戻る」
「会議室」 「最新版」 「なびろぐindex」 「GNSソースを読む」