2012年10月4日木曜日

Xperia Tabletなどで使えるスモールアプリをSony Tablet Pでも使う方法

文鎮化しても知りません。自己責任で。
Sony TabletでXperia Tabletのウィジェットをスモールアプリ化する機能を使うではXperia Tabletのアップデータを使用しましたが、今回はSony Tablet S 4.0.3 release5を使用しました。動作を確認したスモールアプリはソニタブッター for Small Appのみです。ブラウザはスモールアプリ以前にブラウザ自体が動きません。他のアップデータに含まれているスモールアプリは突っ込んでもスモールアプリの一覧に表示されませんでした。

準備するもの

Tablet S Updatesの一番下の4.0.3 R5 FULL
AiOはS.onyTablet.S(P) [ALLinONE] toolでアップデータの復号が上手くいかない時の対処法を参考に準備。
smali-1.4.0.jar、baksmali-1.4.0.jar

手順

  1. Sony Tablet S 4.0.3 release5のアップデータをダウンロードしSDカードにコピー、update.zipにリネーム。
  2. シンボリックリンクを張り、/system/framework/com.sony.smallapp.jar、/system/app/SystemUI.apk、/system/etc/permissions/com.sony.smallapp.xmlをリネームする。
    > adb shell
    $ su
    # mount -o remount,rw / /
    # mount -o remount,rw /dev/block/mmcblk0p3 /system
    # cd mnt
    # ln -s sdcard sdcard2
    # mv /system/framework/com.sony.smallapp.jar /system/framework/com.sony.smallapp.jar.org
    # mv /system/app/SystemUI.apk /system/app/SystemUI.apk.org
    # mv /system/etc/permissions/com.sony.smallapp.xml /system/etc/permissions/com.sony.smallapp.xml.org
    
  3. AiOを使い複合する。
    手順は[4]* Tweaks and Mods [SUBMENU].→[1]Install "rescue-backdoor" [anti-bootloop protection].
    [3]* Custom ROM and Flashing [SUBMENU].→[1]Install "rescue-backdoor" [anti-bootloop protection].です。勿論4→1は既にやっているなら必要ありません。リカバリーモードに入るときは電源ボタンを押しっぱなしにしていると電源が切れてしまうので注意。
  4. 復号が出来たらdecrypted_update.zipを解凍し、system.imgをVirtual CloneDrive等でマウントする。
  5. マウントしたsystem.imgの
    /system/framework/com.sony.smallapp.jar
    /system/etc/permissions/com.sony.smallapp.framework.xml
    /system/app/SystemUI.apk
    /system/app/SmallAppManagerService.apk
    /system/app/SmallAppWidget.apk
    /system/app/SmallAppManagerLegacySupportPackage.apk
    > adb shell mkdir /sdcard/tmp
    > adb push com.sony.smallapp.jar /sdcard/tmp/
    > adb push com.sony.smallapp.framework.xml /sdcard/tmp/
    > adb push SystemUI.apk /sdcard/tmp/
    > adb push SmallAppManagerService.apk /sdcard/tmp/
    > adb push SmallAppWidget.apk /sdcard/tmp/
    > adb push SmallAppManagerLegacySupportPackage.apk /sdcard/tmp/
    > adb shell
    $ su
    # cp /sdcard/tmp/com.sony.smallapp.jar /system/framework/
    # chmod 644 /system/framework/com.sony.smallapp.jar
    # cp /sdcard/tmp/com.sony.smallapp.framework.xml /system/etc/permissions/
    # chmod 644 /system/etc/permissions/com.sony.smallapp.framework.xml
    # cp /sdcard/tmp/SystemUI.apk /system/app/
    # chmod 644 /system/app/SystemUI.apk
    # cp /sdcard/tmp/SmallAppManagerService.apk /system/app/
    # chmod 644 /system/app/SmallAppManagerService.apk
    # cp /sdcard/tmp/SmallAppWidget.apk /system/app/
    # chmod 644 /system/app/SmallAppWidget.apk
    # cp /sdcard/tmp/SmallAppManagerLegacySupportPackage.apk /system/app/
    # chmod 644 /system/app/SmallAppManagerLegacySupportPackage.apk
    
  6. 端末のframework.jarを任意のディレクトリにコピーし、pframework.jarにリネーム。マウントしたsystem.imgからframework.jarも同様に任意のディレクトリにコピーし、sframework.jarリネーム。
  7. pframework.jar、sframework.jarをWinRARなどで別のフォルダに解凍し、それぞれのディレクトリにsmali-1.4.0.jarをsmali.jar、baksmali-1.4.0.jarをbaksmali.jarとリネームしコピーする。
  8. pframework、sframeworkのclasses.dexをデコンパイル。
    //それぞれのディレクトリで
    > java -jar baksmali.jar -o classout/ classes.dex
    
  9. pframeworkの¥classout¥com¥のsonyフォルダを削除。sframeworkの¥classout¥com¥のsony、sonyericssonフォルダをpframeworkの¥classout¥com¥にコピー。
  10. pframeworkのディレクトリでclasses.dexをコンパイル。
    > java -jar smali.jar classout/ -o new-classes.dex
    
  11. pframeworkのclasses.dexをclasses.dex.orgにリネームし、new-classes.dexをclasses.dexにリネーム。pframework.jarをWinRARなどで開き生成されたclasses.dexに置き換え端末に突っ込む。
    > adb push pframework.jar /sdcard/tmp/
    > adb shell
    > su
    # cd /system/framework
    # cp /sdcard/tmp/pframework.jar ./
    # mv framework.jar framework.jar.org
    # mv pframework.jar framework.jar
    # chmod 644 framework.jar
    # reboot
    

スモールアプリをインストールするためにXperia Tabletに偽装
偽装する必要無いですね。そのままでもインストールできます。

ro.product.model=SGPT12
ro.product.brand=Sony
ro.product.name=SYS_052
ro.product.device=txs03
ro.product.board=txs03

ro.build.product=txs03

ro.build.description=SYS_052-user 4.0.3 TISU0118 120829009 release-keys
ro.build.fingerprint=Sony/SYS_052/txs03:4.0.3/TISU0118/120829009:user/release-keys
build.propを以上の用に書き換えて、設定よりPlay Storeのデータを消去。

Google+ Community