2014/08/21

Google標準のEmailアプリとExchangeアプリをユーザアプリに改変して他機種で使える様にする



Nexus 7のGoogle標準Emailアプリ(EmailGoogle.apk)とExchangeアプリ(Exchange2Google.apk)をGalaxyにユーザアプリとしてインストール出来るように改変してみました。

【背景】

当方の環境では、Galaxy S4 LTE-A(shv-e330s、SKテレコム版、NG9)の標準Emailアプリを使ってExchangeサーバーに接続しようとすると、設定時にエラーとなってしまいます。

Galaxyシリーズにはサムスンが改変したEmailアプリ(SecEmail_J.apk)とExchangeアプリ(SecExchange.apk)が搭載されていますが、これらのアプリのExchange Serverとの接続に問題がある様です。

複数のアプリと機種、OSのバージョンで検証した結果、当方の環境では、設定画面の「セキュリティの種類」の項目に「SSL/TLS(証明書をすべて承認)」という選択肢が無く「SSL/TLS」しか選択出来ない場合は設定時にエラーとなる様です。


幸い、Nexus 7(2012 WiFiモデル Android 4.4.4 KTU84P)の標準Emailアプリ(EmailGoogle.apk)とExchangeアプリ(Exchange2Google.apk)にはこの「証明書をすべて承認」という選択肢があり、Exchange Serverにも問題無く接続出来ますので、これらのアプリをGalaxyにユーザアプリとしてインストール出来るように改変してみました。

【作業の流れ】

・必要なファイルの準備
・odexファイルを展開
・classes.dexを作成
・deodexファイルを作成
・署名

【準備】

まず、必要な物を用意します。

JAVAはインストールされている前提です。

Java SE ダウンロード
http://www.oracle.com/technetwork/jp/java/javase/downloads/index.html

1)作業用フォルダ

任意のフォルダで構いませんが、今回は"/desktop/deodex/"というフォルダを作業用に用意しました。

2)アセンブラと逆アセンブラ

An assembler/disassembler for Android's dex format
https://code.google.com/p/smali/

上記のページから以下のファイルをダウンロードして作業用フォルダに保存します。

baksmali
smali
baksmali-2.0.3.jar
smali-2.0.3.jar

"baksmali-2.0.3.jar"と"smali-2.0.3.jar"は"baksmali.jar"と"smali.jar"にリネームしておきます。

3)7Z

以下から7Zをダウンロードして、解凍し、作業用フォルダに置きます。

7z002.lzh
http://madobe.net/archiver/app/dosp/7z.html

4)Emailアプリ/Exchangeアプリとodexファイル

端末から以下の4つのファイルを抜き出して作業用フォルダ内に置きます。

PCの任意のフォルダにもバックアップとしても保存しておくことをお勧めします。

/system/app/EmailGoogle.apk
/system/app/EmailGoogle.odex
/system/app/Exchange2Google.apk
/system/app/Exchange2Google.odex

5)"/system/framework/"の中身

Nexus 7の"/system/framework/"の中身全てを作業用フォルダにコピーします。

ファイル数が多いので、今回は、作業用フォルダの中に"/system/framework/"というフォルダを作り、その中に入れました。

6)APK Multi-Tool(署名用)

APK Multi-Tool
http://apkmultitool.com/

【deodexファイルの作成】

1)odexファイルの展開

まず、Emailアプリのodexファイルを展開します。

コマンドプロンプトから作業用フォルダに入り、以下を実行します。

PCのエクスプローラで作業用フォルダを開き、Shift+右クリックから「コマンドウインドウをここで開く」を選択するとよいでしょう。

今回は"/desktop/deodex/email/"というフォルダに展開しました。

java -jar baksmali.jar -d system/framework -x EmailGoogle.odex -o email

2)classes.dexの作成

コマンドプロンプトから以下を実行してclasses.dexを作成します。

java -jar smali.jar email -o classes.dex

3)deodexファイルの作成

コマンドプロンプトから以下を実行してdeodexファイルを作成します。

7z a -tzip EmailGoogle.apk classes.dex

"/desktop/deodex/"にdeodex化されたEmailGoogle.apkが作成されます。

4)Exchangeアプリも同様にdeodex化

同様に、以下を実行してExchange2Googleのdeodexファイルを作成します。

java -jar baksmali.jar -d system/framework -x Exchange2Google.odex -o exchange

java -jar smali.jar exchange -o classes.dex

7z a -tzip Exchange2Google.apk classes.dex

"/desktop/deodex/"にdeodex化されたExchange2Google.apkが作成されます。

【署名】

deodex化したファイルに署名してユーザーアプリとして端末にインストール出来るようにします。


1)APK Multi-Toolrの"/place-apk-here-for-modding/"フォルダ内に、deodex化したEmailGoogle.apkを置きます。

2)"Script.bat"をクリックしてAPK Multi-Toolを起動します。

3)"Set current project"( "24"+[Enter])からEmailGoogle.apkを選択します。

4)"Extrack apk"("1" + [Enter])を選択すると、"/projects/"フォルダの中にEmailGoogle.apkというフォルダが出来ます。

5)"Select compression level for apk's"("21"+[Enter])を選択します。

"Enter Compression Leberl (0-9)"と聞かれますので"0"を入力します。

6)"Zip apk"("3"+[Enter])を選択します。

署名の有無を聞かれますので、"Regular apk"("2"+[Enter])を選択します。

7) "Sign apk" ("4"+[Enter])を選択します。

8)"/place-apk-here-for-modding/"フォルダ内にsignedEmailGoogle.apkが出来ますので、これをEmailGoogle.apkにリネームして端末の任意の場所にコピーし、ファイラーからクリックしてインストールします。

同様に、Exchange2Google.apkにも署名をして、端末にインストールします。


0 件のコメント:

コメントを投稿