ジャンル不定の日記です。

SDカードへのapk移動方法に問題があった

先日、AndroidでSDを起動時に自動マウントして、いくつかのアプリをSDに移動させていたが、
アプリ単位でSDに移動してシンボリックリンクだと、アプリを更新するとリンクの位置に再度実体が置かれてしまうことが判明した・・・
あまり深く試さなかったが、前に実験で/data/app自体をSDに移動したら動かなかったぽく、全てではなくアプリ単位で移動したらうまく行っていたのでその方法をとっていたが、これではダメだね。

というわけで別の方法を考えたが、/data/app自体をシンボリックリンクにする以外に方法無さそうだし、
本来そのほうがインストール後に個別に移動させなくていいから楽なので、もう一回試してみた。
今回はすんなりうまく行った。
前回やった時はなにかミスってたのかも・・・

adb shell cp -a /data/app /storage/ext4sd/app
adb shell rm -rf /data/app
adb shell ln -s /storage/ext4sd/app /data/app
当然ですけど、/dataを書き換えるので、adbはroot権限。
SDのext4パーティションは起動時に/storage/ext4sdにマウントするようにしてある。
cpにaオプションで完全コピーして元を削除してリンクに。

あと、
/data/app-lib に共有ライブラリ?
/data/dalvik-cache にapkの中身?
がインストールされるようで結構な容量になるので、
adb shell cp -a /data/app-lib /storage/ext4sd/app-lib
adb shell rm -rf /data/app-lib
adb shell ln -s /storage/ext4sd/app-lib /data/app-lib
adb shell cp -a /data/dalvik-cache /storage/ext4sd/dalvik-cache
adb shell rm -rf /data/dalvik-cache
adb shell ln -s /storage/ext4sd/dalvik-cache /data/dalvik-cache
とそっちも移動しておいた。

/data/app-private にコピー防止アプリとやらがインストールされることもあるらしいのだが、空だったからそのまま。


/data/data の方はアプリ単位で一部移動済みだったが、速度低下してる感じもするので、
一旦戻して、容量食うようだったらアプリ単位で移動考えることにする。