Windows 7 Pro 64bit
JDK 1.7.0_75
apktool-2.0.0rc4.jar
Cygwin

XPERIA Z1 compact D5503 14.5.A.0.242から

/system/app/JapaneseIME
/system/app/POBoxSknMono
/system/app/POBoxSknSelector
/system/framework

/system/lib/libなんたら.so
分かりやすいとこに引っこ抜く。

1.frameworkリソースインストール
$ apktool if framework-res.apk
$ apktool if SemcGenericUxpRes.apk

2.apkデコンパイル
$ apktool d JapaneseIME.apk -o pobox
$ apktool d POBoxSknSelector.apk -o sel
$ 7z x -tzip JapaneseIME.apk resources.arsc

3.APIレベル書き換え
pobox/apktool.yml
version: 2.0.0-RC4
apkFileName: JapaneseIME.apk
isFrameworkApk: false
usesFramework:
  ids:
  - 1
  - 2
sdkInfo:
- minSdkVersion: '21'

+ minSdkVersion: '16' 
  targetSdkVersion: '21'
packageInfo:
  forced-package-id: '127'
versionInfo:
  versionCode: '12984323'
  versionName: 6.3.1.A.0.3
compressionType: false

sel/apktool.yml
version: 2.0.0-RC4
apkFileName: POBoxSknSelector.apk
isFrameworkApk: false
usesFramework:
  ids:
  - 1
sdkInfo:
- minSdkVersion: '17'
 
+ minSdkVersion: '16'
  targetSdkVersion: '19'
packageInfo:
  forced-package-id: '127'
versionInfo:
  versionCode: '12976129'
  versionName: 6.3.A.0.1
compressionType: false
unknownFiles:
  semcbuild-command.txt: '8'

4.フォルダリネーム
pobox/res
version: 2.0.0-RC4
drawable-land-xhdpi → drawable-land-xhdpi-v4
drawable-sw540dp-land-xhdpi → drawable-sw540dp-land-xhdpi-v13
drawable-sw540dp-xhdpi → drawable-sw540dp-xhdpi-v13
drawable-sw600dp → drawable-sw600dp-v13
drawable-xhdpi → drawable-xhdpi-v4
layout-sw600dp → layout-sw600dp-v13
xml-sw600dp → xml-sw600dp-v13

5.なんたらチェック回避

com/sonyericsson/android/pobox/core/IWnnLanguageSwitcher.smali 574行
    .line 325
    :goto_0
    sget-object v3, Landroid/os/Build;->MANUFACTURER:Ljava/lang/String;

    .line 1331
    .local v3, "manufacturer":Ljava/lang/String;
    if-eqz v2, :cond_0

-   invoke-virtual {v3, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+   invoke-virtual {v2, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v7


com/sonyericsson/android/pobox/core/OpenWnn.smali 497行
    .line 1330
    :goto_0
    sget-object v3, Landroid/os/Build;->MANUFACTURER:Ljava/lang/String;

    .line 1331
    .local v3, "manufacturer":Ljava/lang/String;
    if-eqz v2, :cond_0

-   invoke-virtual {v3, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+   invoke-virtual {v2, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v7

com/sonyericsson/android/pobox/settings/ControlPanelJaJp.smali 270行
    .line 93
    :goto_0
    sget-object v3, Landroid/os/Build;->MANUFACTURER:Ljava/lang/String;

    .line 94
    .local v3, "manufacturer":Ljava/lang/String;
    if-eqz v2, :cond_1

-   invoke-virtual {v3, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
+   invoke-virtual {v2, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v10

6.五十音キーボード有効化

com/sonyericsson/android/pobox/config/POBoxConfig.smali 418行
    .line 130
    .local v0, "enable":Z
    sget-object v1, Lcom/sonyericsson/android/pobox/config/POBoxConfig;->mPref:Lcom/sonyericsson/android/pobox/preferences/POBoxPreference;

    const/4 v2, 0x1

-   invoke-virtual {v1, v0, v2}, Lcom/sonyericsson/android/pobox/preferences/POBoxPreference;->setEnableHandwritingFading(ZZ)V
+   invoke-virtual {v1, v2, v2}, Lcom/sonyericsson/android/pobox/preferences/POBoxPreference;->setEnableHandwritingFading(ZZ)V

7.リソース参照回避

com/sonyericsson/android/pobox/core/IWnnImeJaJp.smali 20539~20547行
    .line 1209
    .local v1, "diff":I
-   invoke-virtual {p0}, Lcom/sonyericsson/android/pobox/core/IWnnImeJaJp;->getResources()Landroid/content/res/Resources;
-
-   move-result-object v6
-
-    const/high16 v7, 0x2060000
-
-   invoke-virtual {v6, v7}, Landroid/content/res/Resources;->getColor(I)I
-
-   move-result v6
+   const/16 v6, 0xffffffff

com/sonyericsson/android/pobox/core/IWnnImeJaJp.smali 20883~20891行
    .line 839
    invoke-static {}, Lcom/sonyericsson/android/pobox/status/SkinStatusManager;->getInstance()Lcom/sonyericsson/android/pobox/status/SkinStatusManager;

    move-result-object v3

-   invoke-virtual {p0}, Lcom/sonyericsson/android/pobox/core/IWnnImeJaJp;->getResources()Landroid/content/res/Resources;
-
-   move-result-object v4
-
-   const/high16 v5, 0x2060000
-
-   invoke-virtual {v4, v5}, Landroid/content/res/Resources;->getColor(I)I
-
-   move-result v4
+   const/16 v4, 0xffffffff

com/sonyericsson/android/pobox/settings/SeekBarDialogPreference.smali 185~193行
-   invoke-virtual {v2}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
-
-   move-result-object v2
-
-   const v3, 0x2060003
-
-   invoke-virtual {v2, v3}, Landroid/content/res/Resources;->getColor(I)I
-
-   move-result v2
+   const/16 v2, 0xffffffff

com/sonyericsson/android/pobox/settings/SeekBarDialogPreference.smali 211~219行
-   invoke-virtual {v2}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
-
-   move-result-object v2
-
-   const v3, 0x2060002
-
-   invoke-virtual {v2, v3}, Landroid/content/res/Resources;->getColor(I)I
-
-   move-result v2
+   const/16 v2, 0xffffffff

com/sonyericsson/android/pobox/setupwizard/SetupWizardKeyReactionPage.smali 353~357行
    .line 154
    .local v2, "drawable":Landroid/graphics/drawable/Drawable;
-   const v7, 0x2060003
-
-   invoke-virtual {v5, v7}, Landroid/content/res/Resources;->getColor(I)I
-
-   move-result v7
+   const/16 v7, 0xffffffff

com/sonyericsson/android/pobox/skin/SkinData.smali 1687~1691行
    .line 998
-   const/high16 v2, 0x2060000
-
-   invoke-virtual {p1, v2}, Landroid/content/res/Resources;->getColor(I)I
-
-   move-result v0
+   const/16 v0, 0xffffffff

com/sonyericsson/android/pobox/skin/SkinData.smali 1890~1894行
    .line 979
-   const/high16 v2, 0x2060000
-
-   invoke-virtual {p1, v2}, Landroid/content/res/Resources;->getColor(I)I
-
-   move-result v0
+   const/16 v0, 0xffffffff

com/sonyericsson/android/pobox/skin/SkinData.smali 5152~5158行
    .line 750
-   const/high16 v3, 0x2060000
-
-   move-object/from16 v0, p1
-
-   invoke-virtual {v0, v3}, Landroid/content/res/Resources;->getColor(I)I
-
-   move-result v14
+   const/16 v14, 0xffffffff

com/sonyericsson/android/pobox/skin/SkinData.smali 5213~5219行
    .line 758
-   const/high16 v3, 0x2060000
-
-   move-object/from16 v0, p1
-
-   invoke-virtual {v0, v3}, Landroid/content/res/Resources;->getColor(I)I
-
-   move-result v14
+   const/16 v14, 0xffffffff

8.apkコンパイル
$ apktool b pobox -o pobox.apk
$ apktool b sel -o sel.apk
$ 7z a -tzip -mx=0 pobox.apk resources.arsc

9.再署名
POBoxSknMono.apk → mono.apkにリネーム
$ 7z d -tzip mono.apk META-INF
$ jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore nuko.keystore -tsa http://timestamp.globalsign.com/scripts/timstamp.dll -verbose pobox.apk nukokey
$ jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore nuko.keystore -tsa http://timestamp.globalsign.com/scripts/timstamp.dll -verbose mono.apk nukokey
$ jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore nuko.keystore -tsa http://timestamp.globalsign.com/scripts/timstamp.dll -verbose sel.apk nukokey
※keystore
自分が生成したとわかりやすくしているので変な名称
$ keytool -genkey -v -sigalg SHA1withRSA -keyalg RSA -keystore nuko.keystore -alias nukokey -validity 10000

一般的なの?
$ keytool -genkey -v -sigalg SHA1withRSA -keyalg RSA -keystore test.keystore -alias testkey -validity 10000

10.zipalign
$ zipalign -v 4 pobox.apk JapaneseIME.apk
$ zipalign -v 4 mono.apk POBoxSknMono.apk
$ zipalign -v 4 sel.apk POBoxSknSelector.apk
※4は合ってもなくてもどちらでも
$ rm pobox.apk mono.apk sel.apk



0 件のコメント:

コメントを投稿