主にAndroidのカスタマイズ関係について書いていきます

2015/11/21

AOSP系5.1.1にZ5 System UIとSmall appを導入する方法&導入してみました!

AOSP系のROMを導入したXperia GXへのXperia UIの導入について質問を受けたので、それについてやってみたいと思います!

以前CM11にてXperia UI Modを紹介した際は赤星(154)氏が作成した導入用のファイルを用いて簡単に出来たのですが、今回は1から準備をしていきます。


なお、単純にXperiaのSystem UIを導入する場合は以下のスレッドから導入します。

こちらのスレッドではナビバーやロックスクリーンなどをXperia風にはできるのですが、スモールアプリなどはこのまま導入しても有効になりません。

したがって色々とファイルを編集していきます。
※スマホの改造はあらゆる面で自己責任です。それを踏まえた上でroot化等行ってください。

なお、今回はXperia GXへ導入しておりますが、CM12.1などAOSP系のカスタムロムで使える手法であるため、他機種でも行うことができると思います。
Android 5.0と5.1では方法が異なります。以下は5.1のものなのでご注意ください。

なお、筆者は勉強不足なため、間違った手順等踏んでいることがあると思いますが、ご理解いただけますよう、よろしくお願いします。

Small app導入準備

こちらを参考に作業をしていきます。
必要なファイル等はこちらからダウンロードしてください。

framework-res.apkなどをデコンパイル、リコンパイルするのに使ったツールはAPK-Multi-Toolです。xmlファイル等の編集はnotepad++等を使ってください。

以下のファイルをスモールアプリなどを導入したいROMから抜いておきます。
  • framework-res.apk
  • android.policy.jar
  • framework.jar

framework-res.apk

デコンパイル後、\framework-res\AndroidManifest.xmlを開きます。
<uses-permission android:name="android.permission.CONFIRM_FULL_BACKUP"/>という記述を探しだし、その下に以下のコードを追加します。
<permission android:name="com.sony.smallapp.permission.CONTROL_SMALLAPP" android:protectionLevel="system|signature"/>
<permission android:description= "@string/permdesc_smallapp" android:label= "@string/permlab_smallapp" android:name="com.sony.smallapp.permission.SMALLAPP" android:protectionLevel="dangerous"/>
<permission android:description= "@string/permdesc_taskSwitcherPluginView" android:label= "@string/permlab_taskSwitcherPluginView" android:name="com.sonymobile.permission.TASK_SWITCHER_PLUGIN_VIEW" android:protectionLevel="signatureOrSystem"/>
<permission android:name="com.sonymobile.permission.ACCESS_BEACON_MANAGER" android:protectionLevel="system|signature"/>

続いて\framework-res\res\values\strings.xmlを開き、最終行の</resources>の前に以下を追加します。
<string name="permlab_smallapp">Show small apps</string>
<string name="permdesc_smallapp">Allow the application to display small apps on top of other applications.</string>
<string name="permlab_taskSwitcherPluginView">Provide plugin-view to the task-switcher</string>
<string name="permdesc_taskSwitcherPluginView">Allows the application to provide a plugin-view to the task-switcher.</string>

両ファイルの編集終了後、リコンパイルを行います。
なお、リコンパイル時は以下のページを参考にしてください。

android.policy.jar

デコンパイル後 \android.policy\com\android\internal\policy\impl\PhoneWindowManager.smaliを編集します。
"android.permission.SYSTEM_ALERT_WINDOW"の記述を探します。
私が使っているROMでは編集前は以下のものでした。
    const-string v0, "android.permission.SYSTEM_ALERT_WINDOW"

    .line 2204
    const/16 v3, 0x18

    aput v3, p2, v2

    goto :goto_1

    .line 2183
    :sswitch_data_0
    .sparse-switch
        0x7d2 -> :sswitch_2
        0x7d3 -> :sswitch_2
        0x7d5 -> :sswitch_1
        0x7d6 -> :sswitch_2
        0x7d7 -> :sswitch_2
        0x7da -> :sswitch_2
        0x7db -> :sswitch_0
        0x7dd -> :sswitch_0
        0x7e7 -> :sswitch_0
        0x7ee -> :sswitch_0
        0x7ef -> :sswitch_0
        0x7f0 -> :sswitch_0
    .end sparse-switch
.end method

編集後はこちらになります。(青い部分を追加してあります。)
    const-string v0, "android.permission.SYSTEM_ALERT_WINDOW"

    .line 2204
    const/16 v3, 0x18

    aput v3, p2, v2

    goto :goto_1

    .line 1793
    :sswitch_3
    const-string v0, "com.sony.smallapp.permission.SMALLAPP"

    .line 1795
    goto :goto_1

    .line 1862
    nop

    .line 2183
    :sswitch_data_0
    .sparse-switch
        0x7d2 -> :sswitch_2
        0x7d3 -> :sswitch_2
        0x7d5 -> :sswitch_1
        0x7d6 -> :sswitch_2
        0x7d7 -> :sswitch_2
        0x7da -> :sswitch_2
        0x7db -> :sswitch_0
        0x7dd -> :sswitch_0
        0x7e7 -> :sswitch_0
        0x7ee -> :sswitch_0
        0x7ef -> :sswitch_0
        0x7f0 -> :sswitch_0
        0xbb5 -> :sswitch_3
        0xbb6 -> :sswitch_3
    .end sparse-switch
.end method

編集後にリコンパイルします。
記述が違う場合でもXDAを参考に編集してください。

framework.jar

デコンパイル後、\framework.jar\smali2\com\、もしくは\framework.jar\smali_classes2\com\へXDAからframework.jar.zipをダウンロードし、展開したファイル内のsonyフォルダを入れます。(すなわち\framework.jar\smali_classes2\com\sony\のようになります。)
その後リコンパイルします。

SystemUI.apk

XDAの手順での4.SuperUserMode(いわゆるSuperUserMod)ですが、今回はこの手順を行いません。
そもそもSuperUserModはシステムアプリなどの署名回避のために使うもののようです。以下赤星(154)氏の指摘を引用します。
SuperUserModは乱用しない方が良いと思っています。署名キーの分からないストックROMでは仕方ないですが、CMの署名キーは公開されているので、そちらを使って本当にシステムの権限が必要なSystemUIだけ再署名した方が、セキュリティリスクを負わないしスマートです。
というわけで、XDAからスモールアプリ導入用の雛形である[CM12.1][RXS Moonbreakers]Xperia  Z5 Small Apps-by Gamzekal.zipをダウンロードし、中のSystemUI.apkに再署名を行います。

CyanogenModの署名キーを使って再署名する方法はこちらをご覧下さい。


  • framework-res.apk
  • android.policy.jar
  • framework.jar
  • SystemUI.apk
作成した上記4つのファイルをそれぞれもとのものにリネームし、上の雛形に追加・更新し、準備は完了です。
framework-res.apk、android.policy.jar、framework.jarは\system\framework\へ。
SystemUI.apkは\system\priv-app\SystemUI\へ。

導入

こちらを導入する際は、一度端末を起動させ、セットアップが終了後、リカバリから焼きます。
キャッシュのワイプ推奨です。

動作

以下にスクリーンショットを載せます。
また、たまにSystemUIが終了します……。






なお、副産物としてロック画面等も少し変わります。
ただ、最近のXperiaはAOSPにかなり近いので、あまり違和感とかはありませんね。




ミス等ご指摘ありましたら、宜しくお願い致します。

  3 件のコメント:

  1. ありがとうございます。
    Small appが使いたくてこのXDAは試したことがあるのですがうまく動作せず
    あきらめていたところに見つけてしまいました。
    154氏のEuphoriaOSで試したのですが、(確かにSystemUIがたまに落ちますね。。。)
    Small appも問題なく動作しております。

    返信削除
    返信
    1. 導入できたんですね、お疲れ様です!
      私自身あまり知識がないもので1週間ほどいろいろ試した末にやっと出来ました。(途中154氏からアドバイスもいただきましたが……。)

      削除
  2. Nexus 7 2013のCM12.1にスモールアプリを導入できないかと調べているところに
    出てきました。

    おかげで導入することができました。
    わかりやすい解説をありがとうございます!

    返信削除

Google+ Badge

Blog Archive

お世話になっているサイト様

HTCの情報を発信しているサイトです。

HTC端末の改造などについて解説をしているサイトです。Sense 6 ROMも公開されています。

Xperiaのrootkitなどを公開されています。こちらのブログでもprerooted.zipなどでお世話になっています。

NexusやLG G2などの改造、Android全般のカスタム関係について解説しています。

主にHTC端末のカスタムについて解説をしています。

いわゆる154氏のサイトで、GXのカスタムROM等公開されています。

※勝手にリンクさせていただいております。何か不都合または紹介文の変更等ある場合はご連絡ください。

所持端末一覧

IS05(2.3.4)
HTC EVO WiMAX(4.4.4)
HTC EVO 3D(5.1.1)
Nexus 7 2012(7.0)
Xperia GX(5.1.1)
Motorola RAZR(6.0.1)
P-01D(2.3.4)
HTC J butterfly(7.1.2)
Xperia Z(7.1.2)
HTC J One(7.1.2)
HTC One M8(6.0)
Moto 360 1st gen(6.0.1)
Nexus 9(7.1.1)
NVIDIA SHIELD Pro(7.0)
Moto X Style(6.0)
Powered by Blogger.