今日はインストしたアプリは何処へ行くのかと言うお話です。
マーケットや野良apkからインストしたアプリは/data/appに保存されます。
この時のファイル名はアプリID+枝番.apkとなります。
以前、アプリIDは一意で被ることはないとお話しましたが何故枝番が振られているのでしょうか?
これはアップデート用で、もしXX-1.apkがインスト済みの場合は
アップデート版をXX-2.apkとしてインストしXX-1.apkを削除。
XX-2.apkがインスト済みの場合はアップデート版をXX-1.apkとして…
といった具合です。
ここに保存されているapkは引っこ抜いて他の端末に入れることも出来ます。
本当は実動作上の仕掛けを書こうかと思っていましたが、非常に複雑になってしまったのでさらっとにしておきます。
javaの実働部分は/data/dalvik-cache、アプリのネイティブライブラリや設定データは/data/dataの物が使われます。
マーケットや野良apkからインストしたアプリは/data/appに保存されます。
この時のファイル名はアプリID+枝番.apkとなります。
以前、アプリIDは一意で被ることはないとお話しましたが何故枝番が振られているのでしょうか?
これはアップデート用で、もしXX-1.apkがインスト済みの場合は
アップデート版をXX-2.apkとしてインストしXX-1.apkを削除。
XX-2.apkがインスト済みの場合はアップデート版をXX-1.apkとして…
といった具合です。
ここに保存されているapkは引っこ抜いて他の端末に入れることも出来ます。
本当は実動作上の仕掛けを書こうかと思っていましたが、非常に複雑になってしまったのでさらっとにしておきます。
javaの実働部分は/data/dalvik-cache、アプリのネイティブライブラリや設定データは/data/dataの物が使われます。
システムアプリ、プリインストールアプリのバックアップはroot化することで可能になるのですが、リストアが普通にapkを実行するだけではインストールできません。
/system/app にそのまま設置するだけで良いものか、
もしくはdalvik-cacheの該当ファイルと/data/data/内の該当ファイルを削除後、/system/appにapkを設置して
再起動してシステムに上記のファイルを自動で作らせるかべきか…
色々と試しているのですが上手く行きません。
何か良い解決策はありますでしょうか?
ちなみにTitanium Backupの復元でも復元できませんでした。
odexの記事に書いてある内容にはちょっと語弊があって、実際は機種ではなくてそのROMセットに依存します。
ですので…
・標準ROMのapkをCyanogenModに移植
・バージョンが異なる標準ROM間のapk移植
これらはそのままでは動かず。細工してやる必要があります。
また、Titanium Backupを使ってもバックアップを取ったROMセット以外には戻せません。
結果復元できず、Titanium Backupがバックアップしたtar.gzを解凍してCalculator.apkを実行したのですが「インストールされていません」と表示されインストールできず…。
/data/data/com.androoid.calculator2をディレクトリごと削除しCalculator.apkを/system/appに入れて再起動かけたのですが、起動できませんでした。
>これらはそのままでは動かず。細工してやる必要があります。
どのような細工をする必要があるのでしょうか??
環境は同じROMセットでの話です。
Titanium Backupでアンインストール後再起動、
その後、復元へという流れです。
当然、復元できると思ったのですができず、彷徨っています。
CWMから削除前のシステム全体のバックアップで元に戻せたから良いのですが…。
何とかシステムアプリをアンインストールしても復元できる手順を確立したいです。
これはそもそもTitanium Backupの作りが悪いです。
TitaniumでアンインストするとCalculator.apkとCalculator.odexが削除されますが
バックアップ時にはCalculator.apkしか保存していないようです。
odexがあるリソースは必ずセットである必要があるので、apkだけでは意味を成しません。
なので…
アンインスト時
・Titaniumでバックアップを取る
・Calculator.apkとCalculator.odexを別途保存しておく
戻し時
・Calculator.apkとCalculator.odexを/system/appに突っ込む
・Titaniumでデータだけ戻す
これでOKです。
私の端末でも無事復元でいました!!
しかし、これほど有名なTitaniumなのにちょっと残念ですね。
動作的に実装するのは可能なような気もするのですが。
ちなみに、今回の手順はWikiに反映させて頂きました!!
http://hikaku.fxtec.info/htcEVO-ISW11HTwiki/wiki.cgi?page=root%B2%BD%A4%CB%A4%C4%A4%A4%A4%C6#p72
あと、前回質問したadb時の systemへの操作ですが、私の言葉が足らず、通常時でsystemへの操作を試みていました。
recovery時に同じことを行ったところ問題なくできました。
大変申し訳ありませんでした。
またこちらもWikiに反映しました。
http://hikaku.fxtec.info/htcEVO-ISW11HTwiki/wiki.cgi?page=root%B2%BD%A4%CB%A4%C4%A4%A4%A4%C6#p68
それでは、いつもありがとうございます。
今までの疑問が晴れました(^^♪
正直、普通の状態では余り使っていないんですよね。
記事用に状態を戻してざっと検証してはいますが、たまに辻褄が合わない内容があると思います。
そんな場合は教えて頂けると嬉しいです。
baksmali.jarで色々やり再コンパイルして…以下略。
こうすると確かに改Calculator.apkでインストール可能ですね。
勉強になりました。wikiには何となく載せられそうにないのでココだけにしておきますw
私のSensationにはこうやってDHDから移植したiWnnが入っています。