com.google.proccess.gappsが予期せず停止 or Googleログイン不可

これはIS01(rooted)を前提としたかなりマイナーな需要の記事であることを最初に宣言しておきます。
そして、何事も自己責任でどうぞ。

タイトルの問題にはかなり長いこと悩まされていてGWを機会に解決することが出来たので記事にまとめる次第です。

・きっかけ
もはや随分前のことで忘れてしまったけども、確かGappsのデータをうっかり消してしまったのが原因。
IS01には最早定番のGoogleにログインできなくなる病が発症し、にっちもさっちもいかなくなる。
が、ぶっちゃけ、必要なアプリは全て入っているし、それ以外の部分では非常に安定した状態なのでGoogleとの同期は諦め放置したいた。

・Googleにログインできない問題。
Googleにログインしようとすると、SIMが入ってないとか通信が確保できていないとか表示されて、全く繋がる気配がなくなる問題。これは、
/data/data/com.android.providers.settings/databases/settings.db
を削除して解決。問題の当該箇所が解ればそこだけsqlite3で書き換えても良いのだけど…面倒だから削除で。普通は自動的に作り直されるけど…まぁ…不安だったらバックアップを。

・com.google.procces.gappsが予期せず停止
問題はどちらかといえばこっち。
DDMSを通して見るとどうやらgappsにWRITE_SECURE_SETTINGSのpermissionが無いと怒られている。
アプリのこうしたpermissionや固有のuidを管理しているのは
/data/system/packages.xml
なので中身を開いてみるとGoogleAppsにはこれでもかって程権限が与えられている…。もちろんWRITE_SECURE_SETTINGSも。
さっぱり意味が分からん…。ので。とりあえず、このファイルを削除(よい子は真似しないように笑要バックアップ…当たり前かw)後再起動。
どうせこれはカーネルレベルじゃなくてAndroidOSのアプリケーションマネージャが作ってるファイルだし、ADBは通ると判断。案の定新しいファイルが作成された。

が、この状態では全くアプリが動かない。

というのも、そもそもアプリは固有のuidをpackages.xmlで設定されているのと同時に各アプリのデータフォルダのパーミッションもそのuidが所有およびグループに指定されて660になっている。
packages.xmlを作り直す際、システムはディスク上のパーミッションを気にせずpackages.xmlを作り直すためにuidが新たに設定されてしまいディスク上のデータを読めない→起動できない。
そうなるとuiderrors.txtというファイルに齟齬の内容が記録されるのだが…そんなことするなら最初から考慮して作り直せという気もするが…まぁこれはセキュリティ対策でもあるので…。
削除しても良さそうなファイル(主にプリインストールのアプリのデータ。ブラウザ等)は全て削除してパーミッションを書き換えてくれるのだが…

とりあえず、アプリの起動エラーが止まずに全く正常には動作しないがgapps関連ではエラーが出ないことを確認。
どうやら敵はpackages.xmlで間違いないようだった。
もちろん、バックアップ済の元ファイルを入れればそれまで通りの動作であることも確認。
ここからはもうアチコチ書き換えてみたり、作り直されたファイルをいじってみたり…。
パーミッションやuid周りだと考えて丸1日格闘するも駄目。

しかし、元々入っていたほうのpackages.xml(バックアップ済)と新しく作られた方を見ると古い方にはupdatedなんたら…の所にGoogleAppsだけがぽつん…新しい方には存在しない。書式が解らなかったので放置していたが…この項目にはpermsが書いていない…。…これか。というわけで<updated-package>の項目ごと削除して、古い方のファイルを送り込む。
したら無事起動。マーケットも無事起動。

ちなみにpackages.xmlはUTF-8でLFなファイルなのでそれを維持できるエディタならWindows上でも難なく編集できます。

この後はマーケットの起動できない問題に遭遇したけど、これは経験済みだったので難なくクリア。
何ヶ月ぶりかにマーケットとGoogleとの同期を回復しましたとさ。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

計算式を完成させてください。 **認証** Time limit is exhausted. Please reload CAPTCHA.

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください