キャンペーン


2013年8月21日水曜日

Android スマートフォン上の Playストアが消えた場合の復旧方法

emobile GS02をセカンドデバイスで使用しているのですが突然Playストアアプリが消えてしまいました(・・;)




そもそも消えるはずもないアプリです。

わからないけど私のGS02はルート化している為、インストール済みの何かの野良アプリにのっとられたのでしょうか?

adbでPCからUSB接続してshellで検索してもマーケットアプリが存在しない(消えている)ことがわかりました。

ちなみにマーケットアプリはデバイスの下記のapkです。

/system/app/Vending.apk

これはPlayストアそのものではなくPlayストア以前のマーケットアプリです。これがアップデートされてPlayマーケット化されるのでこのapkは必須なわけです。つまり消えるわけもないし、初期状態で必ずインストールされているアプリです。

仕方ないのでadb push でデバイスに送り込むことにしたのですが、私のgs02はルート化しているものの/systemがリードオンリーだったり、cpコマンドが無かったりとかなりセキュリティの壁にハマりました。

GS02に転送したVending.apk(マーケットアプリもココにUpしておきます。)

というかそれを崩すにはデフォルトでインストールされているコマンドが不足しているんです。

一応busyboxをここからDLしてまず入れることにした。→ここのサイトも参考にした。

落としてきたbusyboxを下記のコマンドで一旦SDCARDへ転送します(他のフォルダは書込み権限がない)。 
adb push busybox /mnt/sdcard

adb shell で su してスーパー権限になり、 busyboxを移動します。。
mv /mnt/sdcard/busybox /data/busybox

そしてインストール
cd /data/busybox
chmod 755 ./busybox
./busybox --install

busyboxはUNIXコマンドのかき集めです。
/data/busyboxにインストールしておき、/system/bin/ 内から使うコマンドを下記のようにシンボリックリンクを張っておくといいかもしれません。

ln -s /system/bin/cp /data/busybox/cp

した準備ができたとこで Vending.apk を sdcard へadb pushします。
adb push Vending.apk /mnt/sdcard

そしてadb shell で再度スーパー権限になり
cp /mnt/sdcard/Vending.apk /system/app/

すると「Read-only file system」のパーミッションエラーで叱れます。

どうも /system/appはリードオンリーぽいです。

マウント情報を下記のコマンドで取得します。
mount | grep system

すると以下の情報が得られます。
/dev/block/mmcblk0p12 /system ext4 ro,relatime,barrier=1,nodelalloc,data=ordered
0 0 

ということでro を rw にして再マウントします。
mount -o rw,remount /dev/block/mmcblk0p12 /system

これで /systemディレクトリは書き込み可能になりました。

その後は下記のコマンドを再度たたくとマーケットアプリがインストールされて万々歳です!
cp /mnt/sdcard/Vending.apk /system/app/

なお権限は他のapkと同等にしておきます。

chmod 644 Vending.apk
chown root.root Vending apk

ls -l でパーミッションをチェックします。
-rw-r--r-- root     root      1844811 2011-02-28 18:35 Vending.apk

結局何故消えたたかわりませんが同じ災難に見舞われた方は上記は有効な手段かと思います。

ちなみに上記は emobile gs02 の場合なのでそれ以外のデバイスでは /dev/block/ 以下を適宜読み替えたりしましょう。


0 件のコメント:

コメントを投稿