Apktool for Settings.apk (RN5)

 

必要なツールをインストールします、今回の環境はWindows 10 Proになります。

バージョンや環境の違い、セキュリティ設定などによりうまく動かないこともあるかもしれません。

エラーメッセージを一つずつ潰していくことが重要かと思われます。

 

・JAVAをインストールしPATHを通す

M:\_poge>java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)

 

ドライブの直下に作業用のディレクトリを作成します。( 今回は、M:\_poge\ )

apktool.jarを設置( 今回は2.3.4を利用: M:\_poge\apktool.jar )

apktool.batを設置( M:\_poge\apktool.bat )

・cmd.batを設置(cmd.exeとだけ記述し、ダブルクリックで簡単に起動: M:\_poge\cmd.bat )

・apkを格納するフォルダとしてM:\_poge\_apkフォルダを作成(名前は何でも良い)

 

・apkファイルを端末から取り出す

adb pull /system/priv-app/Settings/Settings.apk
adb pull /system/framework/framework-res.apk
adb pull /system/framework/framework-ext-res/framework-ext-res.apk
adb pull /system/app/miuisystem/miuisystem.apk
adb pull /system/app/miui/miui.apk

 

・apkファイルをインストールする

M:\_poge>apktool if _apk\framework-res.apk
I: Framework installed to: C:\Users\poge\AppData\Local\apktool\framework\1.apk

M:\_poge>apktool if _apk\framework-ext-res.apk
I: Decoding Shared Library (miui), pkgId: 16
I: Framework installed to: C:\Users\poge\AppData\Local\apktool\framework\17.apk

M:\_poge>apktool if _apk\miui.apk
I: Framework installed to: C:\Users\poge\AppData\Local\apktool\framework\16.apk

M:\_poge>apktool if _apk\miuisystem.apk
I: Decoding Shared Library (miui), pkgId: 16
I: Framework installed to: C:\Users\poge\AppData\Local\apktool\framework\18.apk

 

・apktoolでSettings.apkをデコンパイルする

M:\_poge>apktool d _apk\Settings.apk
I: Using Apktool 2.3.4 on Settings.apk
I: Loading resource table...
I: Decoding Shared Library (miui), pkgId: 16
I: Decoding Shared Library (android.miui), pkgId: 17
I: Decoding Shared Library (miui.system), pkgId: 18
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: C:\Users\poge\AppData\Local\apktool\framework\1.apk
I: Loading resource table from file: C:\Users\poge\AppData\Local\apktool\framework\16.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Loading resource table from file: C:\Users\poge\AppData\Local\apktool\framework\17.apk
I: Decoding Shared Library (miui), pkgId: 16
I: Decoding values */* XMLs...
I: Loading resource table from file: C:\Users\poge\AppData\Local\apktool\framework\18.apk
I: Decoding Shared Library (miui), pkgId: 16
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...

 

M:\_poge\SettingsにSettings.apkがデコンパイルされる。

必要に応じて、res\xml\timezones.xmlを修正する。上書きされても良いタイムゾーンを一番上に記述、

又は一番上のタイムゾーンを2つ記述する。(一番上のタイムゾーンを選択した場合は、その次に書かれたタイムゾーンが見えなくなります。他を選択することで、選ぶことはできますが…。)

 

・修正したリソースをコンパイルする(そこそこ時間がかかるので、放置する。core i7-2600 @ 3.4GHzで15分程)

M:\_poge>apktool b Settings
I: Using Apktool 2.3.4
I: Checking whether sources has changed...
I: Smaling smali folder into classes.dex...
I: Checking whether resources has changed...
I: Building resources...
W: warning: string 'Data_set' has no default translation.

~~~

省略: 大量のwarningログ

~~~

W: warning: Package not found for resource #1001004f
I: Building apk file...
I: Copying unknown files/dir...
I: Built apk...

 

完了すると、

M:\_poge\Settings\build\apk\res\xml\timezones.xml コンパイルされたxmlがあるので、こちらをもともとのapkに上書き移植する。

M:\_poge\Settings\dist\Settings.apk こちらのapkは未署名のため、インストールは不可。署名をしても再起動でエラーになるため保留。

 

自己証明を行う場合は、簡単に証明書を作成し、署名する。

本線から外れるので、詳細は控えます。

@ 自己証明書の作成

keytool -genkeypair -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -sigalg SHA1withRSA -validity 10950 -dname "CN=Android Debug,O=Android,C=US" -keystore debug.keystore -storepass android

@ 署名

jarsigner -sigalg SHA1withRSA -digestalg SHA1 -tsa http://timestamp.digicert.com -keystore debug.keystore -storepass android -verbose Settings\dist\Settings.apk androiddebugkey

@ 署名確認

jarsigner -verify -verbose -certs Settings\dist\Settings.apk

 

以上になります。

 

========

 

要約 @ 画像つき(Windows10)

・作業用のディレクトリを作成

・apktool.jar と apktool.batの準備

実行時のjavaのバージョンや、apktoolのバージョンはSSを参照してください。

 

0.必要なAPK一覧 @ dir _apk (OSのバージョンによりサイズが異なるので参考程度)

 

1.javaのバージョン確認と、PATHが通っていることの確認 @ java -version

 

2.各種apkのインストール @ apktool if _apk\***.apk

 

3.Settings.apkのデコンパイル @ apktool d _apk\Settings.apk

 

4.デコンパイルされたフォルダの構成 @ dir Settings

 

5.コンパイルの実行 @ apktool b Settings (そこそこ時間がかかる十数分~)

 

6.コンパイル後のフォルダ構成 @ dir Settings