【GXレポート】ステータスバーを透過してみた【75%Completed】

October 29 [Mon], 2012, 19:00
やっとできた……('A`)
週末2日使って色々試してて、やっとできた。

おはようございます。
というわけで、なんとか土日中に記事を書きたかったんだけど、力尽きて寝ちゃいました。
目が覚めたのでとりあえず更新。



こんな感じ。
透明度(アルファレベル)は255段階(16進数)に調節できます。
この画像では僕は55(10進数だと85/255)に指定しています。




当然こうなるよね。うん。



やり方なんですが、使用するツールとそのバージョン、PCの環境によってかなり差があるようなので色々迷いました。
最終的にはコマンドラインとAPK-Multi-Toolで改変しました。

※もちろん自己責任です※


■ 事前準備(ApkTool導入)
※Android-SDK環境が整っている前提で書いています。
※カレントディレクトリ(作業するフォルダ)に「ApkTool」が入っている必要があります。

ApkToolの導入が必要な場合は次を参照してください。

ここにアクセスし、「Download」タブから必要なファイルをダウンロードします。



「.tar.bz2」という見慣れない拡張子ですが、Lhaplusで普通に解凍できます。
※解凍できない場合、関連付けで「bz2」を解凍できるようにします。



ダウンロードしたファイル2つを解凍、出てきたフォルダの中に入っているファイルを全て1箇所(PATHの通っている場所)に纏めます。
※この先の作業でカレントディレクトリとして扱う、Android-SDKの下の「tools」フォルダにぶち込むと良いと思います。

くれぐれも解凍して出てきたフォルダごと入れないようにしてください。フォルダの中に入っているファイルを全て纏めます。
これでApkToolの導入は完了です。


■ 事前準備(必要なファイルの準備)

@ 端末をUSBデバッグモードでPCと接続。
※ 本体設定の「開発者オプション」の一番上の「USBデバッグ」にチェックを入れる。

A SDKのPATHが通っているディレクトリ(僕は Android-SDK\tools を使用しました)を開き、Shiftキーを押しながら右クリック、表示されたメニューより「コマンド ウィンドウをここで開く(W)」をクリック。

B コマンドプロンプトが起動するので、以下の通り入力。

 adb pull /system/framework/framework-res.apk /android/android-sdk/tools/

と入力してEnterを押します。
※これの意味は、端末の /system/framework/ ディレクトリに入っている「framework-res.apk」というファイルを、PCの指定した場所 /android/android-sdk/tools/ にコピーするというものです。

 adb pull /system/app/SystemUI.apk /android/android-sdk/tools/

と入力してEnterを押します。
※同様に、 /system/app ディレクトリに入っている「SystemUI.apk」というファイルを、PCの指定した場所にコピーするというものです。
※コマンドラインでは、端末側のディレクトリやファイルを指定する際、入力文字の大文字と小文字を区別するようです。「systemui.apk」と入力すると失敗することがあるので注意してください。

※Android-SDKをインストールした場所によって、保存先のパスは変更する必要があります。

うまくいくと、「tools」フォルダに「framework-res.apk」と「SystemUI.apk」が入っているはずです。
続いて、今入力したコマンドラインを閉じずに、以下を入力します。

 apktool if framework-res.apk

と入力してEnterを押します。
次に、

 apktool if SystemUI.apk

と入力してEnterを押します。
こんな感じ↓



隠してる部分は気にしなくて大丈夫です。(ユーザー名入っちゃったのでw)
こんな感じで「framework-res.apk」と「SystemUI.apk」がインストールされましたって感じのメッセージが出たら、一旦コマンドラインを最小化して次の作業にうつります。


■ デコンパイル作業
※参考にしたサイト等の情報により、ナビゲーションバー(スクリーンキー部分)の背景透過作業も行っています。

僕はApk-Multi-Toolを使用しました。
バージョンによってコマンド指定の番号が異なるようなので、番号はあまり参考にならない気がします。

・ Apk-Multi-Toolをダウンロードしてきて、適当な場所に解凍します。

・ 解凍したら「Setup.bat」を起動します。
※ 「Script.bat」ではありません。

・ 「3.Setup Directories」を実行します。3番でなくとも「Setup Directories」と書かれている番号を実行します。
※ 緑文字でコマンドプロンプトが開くと思うので、「3」を入力してEnterを押します。

・ 完了したらコマンドプロンプトを閉じ、Apk-Multi-Toolフォルダに戻ります。

・ 「place-apk-here-for-modding」というフォルダが生成されているはずなので、その中に先程抽出した「SystemUI.apk」をコピーします。

・ 今度は「Script.bat」を起動します。またも緑文字でコマンドプロンプトが開くので、何かキーを押します。

・ メニューがずらっと出てくると思うので、「24 Set current project」を実行します。24番でなくても「Set current project」を選択してください。

・ 「place-apk-here-for-modding」フォルダに入っているapkファイル一覧が表示されるので、作業するファイル(今回は「SystemUI.apk」)の番号を選択してEnterを押します。

・ メニュー一覧に戻るので、「9 Decompile apk」を実行します。9番でなくても「Decompile apk」を選択してください。
※ 「9」を入力してEnterを押します。

・ Apk-Multi-Toolフォルダの中に「projects」というフォルダがあるので開きます。デコンパイルがうまくいけば、この中に「SystemUI.apk」というフォルダが作成されているはずです。

・ 「SystemUI.apk」フォルダの以下の場所にアクセスします。

 SystemUI.apk\smali\com\android\systemui\statusbar

この場所に「StatusBar.smali」というファイルがあるので、適当なテキストエディタで開きます。
僕は「サクラエディタ」を使用しました。
開いたらCtrl+Fで検索ウィンドウを出し、以下の文字列を検索します。

 Landroid/view/WindowManager$Layoutparams;-><init>(IIIII)V

1件だけヒットすると思います。



黄色い部分が検索した文字列です。
反転部分が、元々は -0x1 または 0x4 になっていると思うので、画像の通り -0x3 に書き換えます。
書き換えたらCtrl+Sで上書き保存してエディタを閉じます。

・続いて、以下の場所にアクセスします。

 SystemUI\smali\com\android\systemui\statusbar\phone

この場所に「PhoneStatusBar.smali」というファイルがあるので、テキストエディタで開きます。
開いたらCtrl+Fで検索ウィンドウを出し、以下の文字列を検索します。

 const v4, 0x4800068

1件だけヒットすると思います。



黄色い部分が検索した文字列です。
反転部分を画像の通り書き換えます。
※画像だと最後の1文字に反転がかかっていませんがこちらのミスです。きちんと「v1」まで入力します。

再度Ctrl+Fで検索ウィンドウを出し、以下の文字列を検索します。

 Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPixelFormat:I

1件だけヒットすると思います。



黄色い部分が検索した文字列です。
赤で囲った部分を画像の通り書き換えます。
完了したらCtrl+Sで上書き保存して、エディタを閉じます。

これでSmaliの書き換えは完了です。
続いてxmlファイルを書き換えます。

・以下の場所にアクセスします。

 SystemUI\res\layout

この場所に「navigation_bar.xml」というファイルがあるので、適当なテキストエディタで開きます。
僕はこちらも「サクラエディタ」を使用しました。



赤で囲った場所にあるARGBコードを書き換えます。
デフォルトは #ff000000 になっています。
# がコードの頭につける記号です。
ff がアルファレベル(透明度)なので、ここを書き換えます。
その後ろの数字6桁はそれぞれ、Red/Green/Blueの濃さを2桁で指定します。
ARGBコードは16進数で表記します。
こちらなどを参考にしつつ、お好みでアルファレベルを設定します。

※一番上に載せた画像では、アルファレベルは 55 にしています。これは10進数に戻すと85です。
※コードの指定には16進数を使用するので、最大値(255段階目)は ff になります。不透明時の背景色は黒です。(おなじみですよね)
※最低値 00 で完全に透明になります。

変更が完了したらCtrl+Sで上書き保存して、エディタを閉じます。

※SystemUI\res\layout に「navigation_bar_naked.xml」「navigation_bar_search.xml」というファイルがある場合は、これらも同様に書き換える必要があるようです。
僕のGXと環境ではありませんでしたけどネ。

・続いて、次の場所にアクセスします。

 SystemUI\res\values

この場所に「drawables.xml」というファイルがあるので、テキストエディタで開きます。



画像の通り、「status_bar_background」のARGB値を変更します。
変更が完了したらCtrl+Sで上書き保存し、エディタを閉じます。

これで書き換え作業は終わりです。お疲れ様でした。
最後に、デコンパイルしたSystemUI.apkを元の形式に戻す、コンパイル作業を行います。

・Apk-Multi-Toolの「Script.bat」を起動して、「Set current project」から「SystemUI.apk」を選択します。
※デコンパイル作業時に実行した「Script.bat」で起動したコマンドプロンプトがまだ残っている場合、この作業は不要です。

・「21 Select compression level for apk's」を実行します。21番でなくても「Select compression level for apk's」を実行してください。
※このコマンドでコンパイル時のファイルの圧縮率を決めます。
※今回は無圧縮でコンパイルするので、「0」を入力してEnterを押します。

・「11 Compile System APK Files」を実行します。11番でなくても「Compile System APK Files」を選択してください。

・「続行するには何かキーを押してください」と表示される場合、適当なキーを1回押します。

・英語で何か聞いてくるので y と入力してEnterを押します。

・ログが一気にドバッと流れ、再度「続行するには何かキーを押してください」と表示されますが、押さないでください。

・Apk-Multi-Toolフォルダに「Keep」というフォルダが生成されているので、開きます。



赤で囲った3つを削除します。

・コマンドプロンプトに戻り、適当なキーを押します。

・再びログがドバッと流れ、コンパイル完了です。

Apk-Multi-Toolフォルダの「place-apk-here-for-modding」(最初にSystemUI.apkをぶち込んだ場所)に「System_SystemUI.apk」というファイルが出来ているはずなので、端末のSDカードに移します。
apk名を「SystemUI.apk」にリネームし、 /system/app ディレクトリに上書き保存してパーミッションを644に変更、端末をリブートしたら完了です。


なお今回の成果はまだ75%です。

一番上の画像を見ればわかると思いますが、ナビゲーションバーが透過されていません。
別のホームアプリ(システムアプリに変換したNovaLauncherPrime)だと、ナビゲーションバーの上半分のみ透過されるというわけのわからない状態になっちゃいましたorz

まだまだ修行が足りませんが、とりあえずapkファイルの改変に初めて成功したので結構満足しています。



そんな感じで本日のレポートを終わります。



オマケ:

通知領域も透過しました → こちら

ひつじのショーン 携帯ストラップ Shaun the Sheep


  • URL:http://yaplog.jp/tom-and-kery/archive/125
買ったものリスト





プロフィール
  • プロフィール画像
  • アイコン画像 ニックネーム:Tom&Kery
  • アイコン画像 性別:男性
  • アイコン画像 誕生日:1984年7月27日
  • アイコン画像 血液型:B型
  • アイコン画像 職業:その他
  • アイコン画像 趣味:
    ・映画-SF!SF!SF!
    ・音楽-とにかく四六時中。
    ・漫画-壁一面に積んでます。
読者になる
 ヘ○ヘ
   |∧ <にゃー!
  /    
2012年10月
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
サイト内検索



ページ別 週刊アクセスランキング

1位:
【Androidレポート】僕がタスクキラーを使わない理由

2位:
【Customization】電池、メモリ、CPUの効率的な使い方を追求してスマートフォンを快適に

3位:
【Xperiaレポート】Xperia A SO-04Eが発売。買ったらとりあえずこれだけはやっておこう