2013年4月5日金曜日

ドスパラタブレットの外部SDカードにアプリデータを保存できるようにしよう その1

前々からやろうとしていましたが、別なことに夢中だったため今まで放置してた案件。

ドスパラタブレットのメインストレージは8Gと結構小さいです。
電子書籍をダウンロードしまくってると自然といっぱいになってしまいます。

結論から言うと失敗しました。 というか、下の参考サイトを読んだ時点で
ダメそうな気がしてました。
参考サイト:http://d.hatena.ne.jp/obally/20120104/1325682462

ちなみに、操作はSSHDoroidというAndroidにSSH接続を許可するアプリを導入して、
メインPCから行いました。

①なぜ内部ストレージにしがデータが保存できないアプリがあるの?
不明です。おそらく仕様でファイルの保存場所を固定にしているからでしょう。

②じゃあどうやろうとしてたの?
Linuxには(正確にはLinux限定の話ではなくUNIXは当然、Windowsにも別物ですがあったりします)
シンボリックリンク」というものがあります。わかりやすく説明すると、
要はWindowsのショートカットのようなものです。
このシンボリックリンクを使用して、アプリデータの保存先を外部SDに変えよう、
というのが今回の作戦でした。

適当な図













③理屈はできそうだけどなんで失敗したの?
上述したシンボリックリンクですが、ファイルシステムがFAT(vfat)だとできません。
ファイルシステムとはなんぞやと言われると、簡単なたとえが見つからないので、
サクッと説明できません。ということで省略。

④頑張ればいけるんじゃないの?
できないことはないと思います。

案1.内部ストレージをFAT以外にする。
最初から全部変えてしまえ、という乱暴な方法。
欠点は、これを変更したときにAndroidが正常に動作するか不明なので、
最悪無駄足になります。何よりOSのメディアがないので起動しなくなったりがありえます。

案2.SDのマウント先を変更する。
(以下は確証はないのであくまで推測レベルの話です)
ちょっと中身の話をすると、ドスパラタブレットの内部ストレージは2つにわかれていて、
OSの基幹部分とストレージ部分で2つにわかれています。問題のFATはこのストレージ部分
であり、何もしないと外部SDもこのストレージ部分にマウントされます。
この外部SDのマウント先を基幹部分の別な場所に変更し、FAT以外でフォーマットする。
その後、ストレージ部分から外部SDにシンボリックリンクを貼る、という乱暴な作戦です。
これも下手をするとデータが壊れて起動すらできなくなるかもしれません。

案3.アプリの設定ファイルか何かを見つけていじってしまう。
Androidのアプリインストールもmakeで行っているなら、make時点で変更できるかもしれません。
また設定ファイルに保存先の定義があれば変更可能かもしれません。
が、そもそも設定ファイルで変更可能なら正規の方法で変えられそうですし、
makeからいじるのはさすがにメーカーうんぬんの話が絡んできそう。


ということで保留。その1ってことにしたけど、どうなるかわかりません。