2012年3月5日月曜日

HTC chacha(要rootかつ非deodexな状態)でのセルスタンバイ問題解決方法。~execute.bat改変まで~

  HTC chachaを買って、カスタマイズしていくうちに、購入前からわかっていた事でしたが、b-mobile U300などのデータ通信専用SIMでは、アンテナが立たない、という問題に直面していました。
しかし、そのことによって電池の消費が半端無くなってしまうことまでは知らずに、どうしようかと路頭に迷っていると、
プローブちゃん」さんのサイトに行きつきました。
  ここから始まった私の迷走劇を書き留めておこうと思います…。
  途中まで書き忘れてましたが、くれぐれも自己責任でお願いします…。何度も何度も文鎮化しかけたlinuxとか、Android全く初心者の私がいうんですから…。(なので全く的はずれな事を言います!ご了承ください。)
この作業はあなたの大事なスマホを壊しかねません…。
  あとで責められると怖いので…(笑)
  それでは行きましょう。



~下準備~
0.HTC chachaのrootがとれているか?(つまり、S-OFF状態またはHTCdevを利用してアンロックされていて、且つ何らかのカスタムROM(superuserが実装済みの)がchachaにインストールされているか?)

1.java(詳しくはJDK?)がインストールされているか?

2.SDKがインストールされていて、かつadb shellが使用可能状態になっているか?
  1. 2. の2つは検索すればいろいろとわかってしまうので割愛させて頂きます。(もしかしたらいらないかも?なので…)

3,busyboxがAndroid側にインストールされているか?←0.が満たされていれば多分インストールされていると思います。

4.!!  Clockworkmod Recoverryが実装されていて、かつ最新のバックアップがとれているか?  !!←こちらは特に重要です、何度も私を救ってくれました…。

~用意するもの~
1.「プローヴちゃん」さんの「Android + データ専用 SIM での動作修正パッチ」←必須ですね。本当にありがとうございました。(追記:ちなみに私が使ったパッチは、bmobile_framework_jar_patcher_20120206.zipです。書き忘れていました…。すいません。)

2,dexopt-wrapper←jarファイルをodexに変換してくれます。最初はなんで必要なのか全くわかりませんでした。

すべての準備が整いましたら早速作業開始です。
1.~まず確認~
  ファイラーでandroidの /system/framework/ を見てください、「framework.jar」と「framework.odex」の2つがあるようでしたら、この投稿は読む価値があります。
「framework.jar」のみの場合、deodexされている状態なのでふつーに「プローヴちゃん」のパッチでどうにかなっちゃうかと思います。

2.~パッチを実行するための下準備~
図1 展開したファイルたち

  まず~用意するもの~にてダウンロードしたファイルを展開し、その中のファイルをひとつにまとめます。右のようなファイル群が一つのフォルダにまとまると思います。
  次にexecute.batをメモ帳で開きます。と

rem
===============================
==========
rem odex モード(作りかけ)
rem
===============================
==========
:ODEX_MODE

rem **封印**
goto :EOF


図2 execute.batの改変後の冒頭部
という箇所が見つかると思います。そこから上と、rem **封印**と、goto :EOFは全て消してしまいましょう。
そうすることで、odexモード(作りかけ)に入るんだと…思います。というか入りました。
この作業が終わると始まりは右の画面のようになります。

まだまだexecute.batの書き換えは続きます。
スクロールしていくと

echo 逆コンパイル

という行が見つかると思います。その下の方にある
java -Xmx512m -jar baksmali-1.3.2.jar --api-level 14 -d temp\framework -o temp\lv14 -x temp\framework.odex
を書き換えます。

HTC chachaの場合は、
java -Xmx512m -jar baksmali.jar --api-level 10 -c:core.jar:bouncycastle.jar:ext.jar:framework.jar:android.policy.jar:services.jar:core-junit.jar -d temp\framework -o temp\lv10 -x temp\framework.odex
というふうに改変します。

図3 逆コンパイルの箇所の改変後

同じような要領で
echo 書き換えの下の方にある、
cscript //Nologo data-only-sim-smali-fixer.wsf temp 14 0 1
の内容を
cscript //Nologo data-only-sim-smali-fixer.wsf temp 10 0 1
という風に

図4 書き換えの箇所の改変後

そして、

echo コンパイルの下の方にある、
java -Xmx512m -jar smali-1.3.2.jar --api-level 14 -o temp\classes.dex temp\lv14
の内容を
java -Xmx512m -jar smali.jar --api-level 10 -o temp\classes.dex temp\lv10
という感じで改変します。

図5 コンパイルの箇所の改変後


こうする理由はHTC chachaのAndroidのver.にあります。私のROMはCyanogenMod7 on HTC ChaChaですが、androidのver.は2.3.7です。
なので、api levelを10に設定する…らしいです。
あと、逆コンパイルが異様に変わった理由(-cの部分)は、そうしたほうがエラーが少なくなるから?だと考えています。
逆に他のスマホだと、-cの方に追加しなくちゃいけないものがあるかもしれないし、Androidのver.が違えばそれに応じたapi levelを変えなくてはいけないのだと思います。

このあたりを参考にしたサイト様は「よくわかってないBlog その2」です!!
ありがとうございました。
このサイト様には後でまたお世話になります。

あ、後最後に改変するところがあります。
図6 改変前

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
図7 改変後













今回は以上です(長くなりそうなので、分けて書こうと思います…。)

0 件のコメント:

コメントを投稿