最近は、X10のカスタムROMも成熟化してきましたので、ステータスバーのアイコン変更や通知領域のトグルスイッチ設置などデザイン側のカスタマイズを行っていたりします。
そこで作業中に躓いた点をここにメモしておきたいと思います。
コンパイル、apkmanagerなどのワードの説明、使い方は割愛させて頂きます。
使い方などはそれぞれのワードでググって頂けますと情報はすぐに見つかると思います。
An Error Occured, Please Check The Log
コンパイルする際に、このように怒られる場合があります。
この場合は、書いてあるとおりログを確認することで対処法が見えてきます。
ログはapk manager のlog.txt内に書かれています。
同じIDがふられてしまっている場合
C:\apk_manager_4.9\other\..\projects\SystemUI.apk\res\values\public.xml:124: error: Multiple entry names declared for public entry identifier 0×77 in type drawable (notification_header_text_color vs quickpanel_icon_gps_on).
この場合、public.xml の124行目でエラーが起こっていると言うことになります。
notification_header_text_color
と
quickpanel_icon_gps_on
で同じIDがふられているよ
ということです。
この場合IDをふり直せばエラーはなくなります。
xxxxxxxxx というIDはあり得ないよ、と言われる
C:\apk_manager_4.9\other\..\projects\SystemUI.apk\res\values\public.xml:139: error: Public entry identifier 0x7f020091 entry index is larger than available symbols (index 145, total symbols 139).
0x7f020091 というIDはあり得ないよ。と怒られています。
この場合、IDの振り方に問題があります。
public.xml に記載されているIDは16進数で書かれています。
つまり、
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ・・・
のような10進数ではなく
0 1 2 3 4 5 6 7 8 9 a b c d e f ・・・・
0~9,a~fまでを繰り返す。これが16進数になります。
ちなみに、f の後は、
10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 ・・・
という風に進んでいきます。
このルールでちゃんとIDを振れば問題は解決します。
framework-res.apk 以外のapkファイルをapkmanagerでコンパイルする
framework-res.apk 以外(例えば、SystemUI.apkなど)は、apkmanager でコンパイルしようとするとエラーが表示されてうまくできません。
framework-res.apk 以外をapkmanagerでコンパイルできるようにするにはapktoolとの提携が必要です。
apktool をインストールして、apktool以下の階層にフォルダを作り(例えばframework)、その中にオリジナルのframework.apkを入れます。
かめの場合、x10,play,acroで更にフォルダ分けを行ってオリジナルを入れています。
C:\apktool\framework\x10\framework.apk
C:\apktool\framework\play\framework.apk
C:\apktool\framework\acro\framework.apk
そのフォルダ(playであれば、playフォルダ)でShiftを押しながら右クリックをします。
「コマンドウインドウをここで開く」というのをクリックしますとこのフォルダでコマンドが開きます。(cdコマンドで移動する手間が省略できます)
apktool if framework-res.apk
とコマンドを打てば、ユーザフォルダ内に「1.apk」というファイルが保存されます。
これを行えば、apkmanagerでエラーがでなくなります。
関連記事
- 通知領域にトグルスイッチを設置してみた
- Android2.3.4 用に通知領域トグルスイッチ、バッテリー100段階表示を作ってみた
- PLAYのアイコンを1%刻みにしたりステータスバーを透過してみたり
- Play の場合 ATOK がマーケットに出ないので、MarketEnabler(rooted) を使って導入する
- 本日、日本でXPERIA PLAY が発売されましたね。(ルート化のこととかいろいろ)
Trackback URL
管理者承認後に公開されます。リンクと感想は必須でお願いします
最近のコメント