Gmailの修正

数か月前からGoogleがAndroid上でサードパーティ製アプリからのGmailデータベースへのアクセスを制限しました。これがどういうことかと言えば、初めから端末にシステムアプリとして入っているアプリからしか、Gmailにアクセスできないようになり、マーケットからダウンロードしたGmail関連のアプリは使えなくなったということです。この変更を知らないユーザーは、マーケットで「このアプリ使えない!」とか痛いコメントを書いてます。

ただ、Gmailアプリにちょっと手を加えれば、実は回避できる問題です。最近またGmailアプリが更新され、自動アップデートのチェックを外しておくのを忘れていたため、頻繁に「このパッケージは正しく署名されていません」のような警告が出ていたので、新しいGmailアプリをダウンロードして再度修正することにしました。メモを取っていなかったので、手順を備忘録として残しておくことにします。


元ネタはこちらです。

必要条件:
root化した端末
adbコマンドが使える環境 (基本的な使い方はググってください)
Apk Manager (基本的な使い方はググってください)

手順:(オリジナルの手順はApk Manager画面とApk Managerのインストールされたフォルダがごちゃまぜで書かれていますので、前者をApk Manager画面、後者をApk Managerフォルダーと区別して書きます。)

1 – Install Apk Manager (found here)
(インストールしていない場合は、ここからダウンロードして)Apk Managerをインストール。

2 – ‘adb pull /data/app/com.google.android.gm*.apk’ (get your Gmail updated version from your phone)
コマンドラインで「adb pull /data/app/com.google.android.gm*.apk」と実行する。(アップデート済みのGmailアプリを端末から取得する)(以下便宜上、取得したファイルがcom.google.android.gm-1.apkという名前であったとします)

3 – copy this APK file in Apk Manager ‘place-apk-here-for-modding’ folder
Apk Managerフォルダー直下の「place-apk-here-for-modding」というフォルダーにcom.google.android.gm-1.apkをコピーする。

4 – launch Apk Manager
Apk Managerを起動する。

5 – choose 22, pick your project
(メニュー画面で)22を選択しエンターを押し、com.google.android.gm-1.apkというプロジェクトを選択する。

6 – choose 9 to decompile
(メニュー画面に戻るので、)9を選択しエンターを押し、(com.google.android.gm-1.apkに含まれるファイルを)展開する。

7 – enter in projects folder, edit the ‘AndroidManifest.xml’
(ここで一旦Apk Manager画面を離れ、Apk Managerフォルダの直下の)projectsフォルダーの下に(新たに作られたcom.google.android.gm-1.apkというフォルダーに)入り、「AndroidManifest.xml」というファイルをエディターで開く。

(AndroidのテキストファイルはUNIX系なので、改行コードがLFだけです。一方、Windowsの改行コードはCR+LFなので、メモ帳などのエディターでAndroidのテキストファイルを開くと、改行が無視されたように表示されます。このままでも問題はありませんが、LFだけの改行コードでも正しく表示されるエディターを使うことをお勧めします。)

8 – on every lines you find android:protectionLevel=”signature” change them to android:protectionLevel=”normal”, save your file
「android:protectionLevel=”signature“」という個所を全て「android:protectionLevel=”normal“」と変更して、ファイルを保存する。

9 – in Apk Manager, choose 11 to compile the APK
Apk Manager画面に戻り、(メニュー画面で)11を選択しエンターを押し、新たなapkファイルをコンパイルする。

10 – answer yes to ‘system app’
「system app」(システムアプリか?)と聞いてくるので、yを押しエンターを押す。

11 – answer yes to ‘copy original files’
「copy original files」(オリジナルパッケージからファイルをコピーするか?)と聞いてくるので、yを押しエンターを押す。(ここで一旦Apk Manager画面がpauseされるので、まだ何もキーを押さない!)

12 – go in Apk Manager, ‘keep’ folder, delete ‘AndroidManifest.xml’ and ‘resources.arsc’
(再度Apk Manager画面を離れ、)Apk Managerフォルダの直下に「keep」という新たに作られたフォルダーから「AndroidManifest.xml」と「resources.arsc」という二つのファイルを削除する。

(keepフォルダーにはオリジナルのパッケージからファイルが展開され、新たなプロジェクトのコンパイル時にここに含まれているファイルが優先的に上書きコピーされます。上記のようにファイルに修正を加えた場合、それと同名の修正前のファイルを削除しないと、コンパイル時に修正前のファイルで上書きされてしまい、修正が反映されません。また上記のようにxmlファイルを修正した場合、オリジナルのresources.arscを削除して、コンパイル時にApk Managerに新たにresources.arscを作り直してもらいます。)

13 – go back to Apk Manager script, press enter
Apk Manager画面に戻り、エンターを押す。

14 – in Apk Manager, choose 12 to sign the APK
(コンパイルが終了し、メニュー画面に戻ったら、)12を選択しエンターを押し、新たにコンパイルされたapkファイルに署名を施す。

15 – pick the final APK file in ‘place-apk-here-for-modding’ folder
(Apk Managerフォルダの直下の)place-apk-here-for-moddingフォルダーの下に「signedcom.google.android.gm-1.apk」というファイルができているはず。

これで準備は完了です。adb shellで端末のシェルに入り、/system/appからGmail.apkもしくはcom.google.android.gm.apkを削除し(念のため単純に拡張子をapkからorgと変えておいてもいいと思います)、/data/appからcom.google.android.gm-1.apkを削除し、先ほど修正したsignedcom.google.android.gm-1.apkを/system/appにコピーします。念のため一旦リブートして終了。

機能的にも見た目的にもまったくオリジナルのGmailと同じですが、以前と同じようにPure messenger widgetなどのサードパーティ製アプリからGmailにアクセスできると思います。

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: