ronzi A3カスタムfirmware 20111024版


比較的おとなしいカスタマイズのカスタムfirmwareを用意しました。
具体的にはframework-res.apkの書き換えをやめて、ronziA3オリジナルのままにしています。
(2013/01/15 ダウンロードリンクを修正)

firmware base: ronzi公式配布のRK43_60WFRT_RZA3_20110511_1

Warning: wifi MAC address will be changed. All data lost! Also, /mnt/sdcard data lost, too!

change
* remove chinase apk.
* add LatinIME.apk and nicoWnnG.apk
* update market apk and google apk from slatedroid.com:[GUIDE] Cruz T10x / T301: Rooting, Dalvik Turbo, Removing Bloatware, Gapps & Market & More

– Android Market 3.1.3
– Google Maps 5.9.0
– Google Books 1.1.4
– Google Talk 1.3
– OI File Manager 1.16
– Spare Parts 2.3.5
– YouTube 2.0.26

* change some /system/build.prop value, it’s from Ramos V65PRO.
* add Dalvik Turbo VM and /data/local.prop
* support /system/etc/init.d/ files.
* add IngenicScreenCalibration.apk from Ramos V65Pro firmware
* add Japanese font file(/system/fonts/DroidSansJapanese.ttf).It’s MTLc3m.ttf.
* 132 dpi setting.

警告:
・無線LANのMACアドレスが変わります(USBtoolで適用するとかならず変わります)
・全部のデータが消えます。/mnt/sdcard のデータも消えます。(/mnt/sdcard1 は消えません)

変更点
・中華なapkを消しました
・英語圏用IMEと日本語圏用IME(nicoWnnG)を追加しました
・nicoWnnGの初期設定ファイル(/data/data/net.gorry.android.input.nicownng/shared_prefs/net.gorry.android.input.nicownng_preferences.xml)を置き、nicoWnnGを手動で有効にすればそれなりの設定ですぐ使えるようにした。
・マーケットなど以下のapkを[GUIDE] Cruz T10x / T301: Rooting, Dalvik Turbo, Removing Bloatware, Gapps & Market & More から入手したファイルで置き換えました

– Android Market 3.1.3
– Google Maps 5.9.0
– Google Books 1.1.4
– Google Talk 1.3
– OI File Manager 1.16
– Spare Parts 2.3.5
– YouTube 2.0.26

・/system/build.propをRamos V65PROで採用されているパラメータに変更しました
・高速化を狙ってDalvik Turbo VMを入れてみました。
・/system/etc/init.d/ においたファイルを起動時に実行するようにしました
 (/system/etc/init.d/99end を消すと起動が途中で止まるので注意してください)
・IngenicScreenCalibration.apkをRamos V65Proから持ってきました。
 設定-表示にてキャリブレーションができるようになります。
・MTLc3m.ttfを/system/fonts/DroidSansJapanese.ttfとして配置しました。
・「ro.sf.lcd_density=132」設定

* flashtool :USBbootTool_20110426.rar my dropbox folder: MIPS/ronziA3/USBbootTool_20110426.rar
* firmware: ronziA3_20111024.zip my dropbox folder: MIPS/ronziA3/customrom/ronziA3_20111024.zip

How to flash firmware.
English guide: ronzi A3 firmware update guide
日本語: ronzi A3 その4 firmwareアップデート

ronzi A3カスタマイズメモ 20111024版


ronzi A3をカスタマイズしていくときのメモ書きをいくつか・・・

・YouTubeアプリを最新版にするとHQモードが動かない、ということなので2.0.26を使用する。
その他、[GUIDE] Cruz T10x / T301: Rooting, Dalvik Turbo, Removing Bloatware, Gapps & Market & More にある以下のファイルを持ってきた。

– Android Market 3.1.3
– Google Maps 5.9.0
– Google Books 1.1.4
– Google Talk 1.3
– OI File Manager 1.16
– Spare Parts 2.3.5
– YouTube 2.0.26

・Dalvik Turboはfroyo-hard-float-r1を使用している
上記のCruz Tabletでは、froyo-soft-float-r1を使用しているようだけど、hard floatにしている。

・nicoWnnGの設定ファイル
デフォルト設定では以下となっている。

# pwd
/data/data/net.gorry.android.input.nicownng/shared_prefs
# ls -l net.gorry.android.input.nicownng_preferences.xml
-rw-rw---- app_33   app_33       1057 2011-10-24 01:48 net.gorry.android.input.nicownng_preferences.xml
# cat net.gorry.android.input.nicownng_preferences.xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="nicoflick_mode_landscape">0</string>
<boolean name="change_alphanum_12key_portrait" value="true" />
<string name="nico_candidate_lines_portrait">3</string>
<boolean name="change_kana_12key_portrait" value="true" />
<string name="candidateview_height_mode2_landscape">2</string>
<boolean name="change_kana_12key_landscape" value="false" />
<string name="input_mode_landscape">input_normal</string>
<boolean name="change_alphanum_12key_landscape" value="false" />
<string name="nicoflick_mode_portrait">0</string>
<string name="input_mode_portrait">input_normal</string>
<string name="candidateview_height_mode2_portrait">2</string>
<string name="nico_candidate_lines_landscape">1</string>
<string name="flick_sensivity_mode_landscape">0</string>
<string name="flick_sensivity_mode_portrait">0</string>
<boolean name="new_preference_20110417a" value="true" />
<string name="mainview_height_mode2_landscape">2</string>
<string name="mainview_height_mode2_portrait">2</string>
</map>
#

設定を行うと↓のような感じになる。

# cat net.gorry.android.input.nicownng_preferences.xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="nico_candidate_lines_portrait">3</string>
<string name="candidateview_height_mode2_landscape">1</string>
<boolean name="shrink_candidate_lines_landscape" value="false" />
<boolean name="change_alphanum_12key" value="false" />
<string name="candidate_font_size">0</string>
<string name="input_mode_landscape">input_normal</string>
<boolean name="popup_preview" value="true" />
<string name="flick_sensivity_mode">0</string>
<string name="candidateview_height_mode2_portrait">2</string>
<string name="nico_candidate_lines_landscape">1</string>
<boolean name="space_below_keyboard_landscape" value="true" />
<string name="nicoflick_mode">0</string>
<string name="flick_sensivity_mode_portrait">0</string>
<boolean name="space_below_keyboard" value="true" />
<string name="input_mode">input_normal</string>
<string name="keyboard_skin">keyboard_android_default</string>
<boolean name="show_candidate_fulllist_button_landscape" value="true" />
<boolean name="show_candidate_fulllist_button" value="true" />
<boolean name="is_skip_space_landscape" value="true" />
<boolean name="opt_enable_learning" value="true" />
<boolean name="shrink_candidate_lines" value="false" />
<boolean name="change_alphanum_12key_landscape" value="false" />
<boolean name="different_pl" value="true" />
<string name="key_sound_vol">1</string>
<string name="candidateview_height_mode2">1</string>
<string name="flick_sensivity_mode_landscape">0</string>
<string name="mainview_height_mode2_landscape">0</string>
<boolean name="nospace_candidate2_landscape" value="true" />
<boolean name="change_alphanum_12key_portrait" value="true" />
<string name="qwerty_kana_mode_landscape">0</string>
<string name="qwerty_kana_mode">0</string>
<boolean name="change_kana_12key_portrait" value="true" />
<boolean name="change_kana_12key" value="false" />
<boolean name="nospace_candidate2" value="true" />
<boolean name="flick_guide_landscape" value="true" />
<boolean name="nico_candidate_vertical" value="true" />
<boolean name="new_preference_20110417a" value="true" />
<string name="candidate_font_size_landscape">0</string>
<string name="nicoflick_mode_landscape">0</string>
<string name="mainview_height_mode2">0</string>
<string name="nico_candidate_lines">1</string>
<boolean name="flick_guide" value="true" />
<boolean name="opt_spell_correction" value="true" />
<boolean name="change_kana_12key_landscape" value="false" />
<boolean name="is_skip_space" value="true" />
<string name="nicoflick_mode_portrait">0</string>
<string name="input_mode_portrait">input_normal</string>
<string name="hidden_softkeyboard2">0</string>
<string name="hidden_softkeyboard2_landscape">0</string>
<string name="opt_prediction_mode">on_prediction</string>
<boolean name="nico_candidate_vertical_landscape" value="true" />
<string name="mainview_height_mode2_portrait">2</string>
</map>
#

・nicoWnnGを最初から有効にしておく方法(失敗)
設定を行うと、「/data/data/com.android.settings/shared_prefs/com.android.settings_preferences.xml」に記録されているように見える。

# cd /data/data/com.android.settings/shared_prefs
# ls -l
-rw-rw---- system   system        198 2011-10-24 01:47 com.android.settings_preferences.xml
# cat com.android.settings_preferences.xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<boolean name="net.gorry.android.input.nicownng/.NicoWnnGJAJP" value="true" />
</map>
#

ちなみにsystem:systemは数値で表現すると1000:1000である。

なお、開発オプションのUSB接続時にスリープにしない設定を入れたりすると、このファイルは以下の様になる。

# cat com.android.settings_preferences.xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<boolean name="allow_mock_location" value="true" />
<boolean name="enable_adb" value="true" />
<boolean name="keep_screen_on" value="true" />
<boolean name="location_network" value="false" />
<boolean name="net.gorry.android.input.nicownng/.NicoWnnGJAJP" value="true" />
</map>
#

しかし、実際に、上記の設定を行ってみても、設定は有効にはならないようで、Android内部に別途作成されるsqliteのデータベース上への登録が必須であるようだ。

・framework-res.apkの編集
apktoolでばらして再構築、なんだけど、失敗しやすくて難儀中・・・

framework-res/res/layout/status_bar.xml 内にボタンを配置するレイアウトを追加

framework-res/res/values/ids.xmlとframework-res/res/values/public.xml 内に上記で使用している「@id/status~」という記載を追加
idの値を被らないように注意が必要。

「apktool b 展開ディレクトリ」で再構築するけど、apkファイルは作らない。
buildディレクトリ内のファイルを利用する。

1. オリジナルのframework-res.apk を作業用にframework-res-new.apkとでもする。
2. 「apktool d framework-res-new.apk」で展開する
3. framework-res-newディレクトリにいろいろファイルが出来るが、その中のresディレクトリで作業を行う。
  res\layoutとres\valuesなどでいろいろやる
4. 「apktool b framework-res-new」で再構築する
5. 面倒なのでwindowsの7-zipを使ってframework-res-new.apkを開く
6. 7-zip内操作でframework-res-new.apk\res\layoutに移動し
  framework-res-new\build\res\layout内のファイルを上書きする
7. res\valuesのデータはやり方が違うので7-zipを閉じる
8. res\valuesのデータはresources.arscに含まれるが
  非圧縮でかいた方がいいので、7zipなどでframework-res-new.apk内のresources.arscを非圧縮で置き換える
  うちの場合はlinuxでやったので「7za u -mx0 -tzip framework-res-new.apk resources.arsc」とした。
9. 上記で完成したframework-res-new.apkをronzi A3に転送する。

ポイント
・framework-res.apkを自己署名とかでやってもうまくいかない。googleの署名が必要っぽいのでなんとかごまかす。
・framework-res.apkを7zipで開くとxmlファイルがあるのが見えるけど、開いてみるとxmlそのままじゃなくて処理されているので、そのまま置き換えは不可
・apktoolをうまく使いこなす必要がある
・zipの圧縮と非圧縮もうまく使いこなす

で、書き換えたのですが、statusbarにボリュームを表示させられたけど、そこから実際のボリュームを動かすには別の設定が必要な模様・・・

それはframework.jarの方っぽい

ronzi A3とRamos V65PROのframework.jarをapktoolでばらして、diffを取ってみると、おそらく以下のあたりが関連していそうな雰囲気。

--- framework-ronzi/framework.jar.out/smali/android/media/AudioService$SettingsObser
ver.smali       2011-10-24 17:07:11.000000000 +0900
+++ framework-v65/framework.jar.out/smali/android/media/AudioService$SettingsObserve
r.smali 2011-10-24 17:08:22.000000000 +0900
@@ -184,25 +184,6 @@

     aput v2, v0, v1

-    .line 1717
-    iget-object v0, p0, Landroid/media/AudioService$SettingsObserver;->this$0:Landroid/media/AudioService;
-
-    invoke-static {v0}, Landroid/media/AudioService;->access$2200(Landroid/media/AudioService;)[Landroid/media/AudioService$VolumeStreamState;
-
-    move-result-object v0
-
-    const/4 v1, 0x5
-
-    aget-object v0, v0, v1
-
-    sget-object v1, Landroid/provider/Settings$System;->VOLUME_SETTINGS:[Ljava/lang/String;
-
-    const/4 v2, 0x2
-
-    aget-object v1, v1, v2
-
-    invoke-virtual {v0, v1}, Landroid/media/AudioService$VolumeStreamState;->setVolumeIndexSettingName(Ljava/lang/String;)V
-
     .line 1730
     :cond_1
     :goto_0
diff -ur framework-ronzi/framework.jar.out/smali/com/android/internal/R$id.smali fra
mework-v65/framework.jar.out/smali/com/android/internal/R$id.smali
--- framework-ronzi/framework.jar.out/smali/com/android/internal/R$id.smali     2011
-10-24 17:07:24.000000000 +0900
+++ framework-v65/framework.jar.out/smali/com/android/internal/R$id.smali       2011
-10-24 17:08:36.000000000 +0900

.field public static final status_date:I = 0x1020180

-.field public static final status_volume_add:I = 0x10201f6
-
-.field public static final status_volume_sub:I = 0x10201f5
+.field public static final status_home:I = 0x10201f3

 .field public static final stopSelectingText:I = 0x1020029

これだけではうまく動かなかった。

ちなみに、これで調査中にみつけたこと
・V65proのframework.jar.out/smali/android/media/MediaFile.smaliにFLACサポートっぽい記述がある

 

Xperia X10 mini proにKrSH v2.0を入れてみた


Xperia X10 mini pro用として新しくKrSHというカスタムkernelが出てきた。

現段階の売り文句
・CM7.1対応
・CWM Recovery v5.0搭載

たしかにこれを使うとオフィシャル配布のCM7.1とFreeXperiaProjectのCM7.1を動かすことはできた。
しかし、無線LANがちゃんと動かなかった。
また、adb logcatが有効にできないようなので、うまく動かない時の追求ができない、という問題点もある。

なお、KrSH+CM7.1からZombie Panic Kernel+GintonicSEに戻す時に手順によってはうまく行かないことがあるので注意点
1. KrSH+CM7.1の状態
2. KrSHのRecoveryに入って、GintonicSEを適用
3. そのあとZombie Panic Kernelを適用

Zombie Panic Kernelを先に適用してしまうと、Recoveryに入れない、という状況になる。

・KrSH v2.0のブートロゴ

説明書きにあるとおり、バグってます。

・いろんな場面の「yes/no」選択画面がおかしい

ronzi A3のframeworkを入れ替えてみる


ronzi A3に、IQQ M1用とかRamos V65PRO用のfirmwareからもってきたファイルをいろいろ書き込んで見ている。

・/system/app/Launcher2.apk
 ronzi A3, IQQ M1, V65ので違いがある

・/system/framework/ の中身全部
 IQQ M1のを入れても、V65のを入れてもそこそも動く。
 ただ、PowerManager関連でエラーがでる。
 V65の場合、ステータスバーにボリューム調整ボタンが無くなる。
 IQQ M1のやつのが無難か?
 
 ただ、書き換えようによっては、無限再起動に陥るようだ。
 (そうなってもUSBbootoolで修正firmwareを書き込めるので問題は無い)

全然まとまっていないメモ書き for MIPS androidのパーテーション


とりあえず、メモ書き程度のものですが・・・

・userdata.img
/data パーテーションとなる場所
/data/app
普通にアプリをインストールすると、ここに入る。
あらかじめここにapkをおいておくと、プレインストールだけど削除できる、というアプリになるがいくつか制約事項がある。
インストール時に/data/dataにファイルを作るapk、例えば、nicoWnnGなどを置く場合に注意が必要となる。

nicoWnnGは、インストール時に /data/data/net.gorry.android.input.nicownng/lib/に辞書ライブラリファイルを作成する。
また、起動させた際には /data/data/net.gorry.android.input.nicownng/ にいろいろファイルをつくる。

その他、Jz4760ではAngryBirdsを動かすと駒落ちが低いので、低品質版を起動させたいが、標準設定では高品質版となっている。これを初回起動時から低品質版で起動させるには、/data/data/com.rovio.angrybirds/files/settings.lua というファイルに「gfxLowQuality = true」と書いておけばいい。

ここで注意しなければならない点は、/data/data/以下に作られるディレクトリというのは、アプリケーションごとに割り当てられたUID/GIDでパーミッションが作られる、という仕様である。
一般アプリは10000番から後の数字がつくが、インストール時に自動生成されるため、こういった場合に非常に困る。

RamosV65Proには、gfxLowQuality=trueの設定が入っていたので、その設定の通りにディレクトリにパーミッションとUID/GIDを設定してみたのですが、全然駄目でした。

今回は、あまり良くない対応なのですが、777の全ユーザに対して許可を行ってしまいました。

・system.img
/system パーテーションになる場所。
/system/app が消せないプレインストールアプリの置き場。
/data/appと違って、初回起動時にインストール処理をちゃんとやってくれているっぽい。
/system/appのアプリも、/data/dataにファイルを作る。

・boot.imgを分解結合して遊ぶ
split_bootimg.pl, mkbootfs, mkbootimgを使って分解結合して遊べます。

試しにRamosV65PROのboot.img-kernelとronziA3のboot.img-ramdisk.gzを組み合わせるとどうなるかな、と試したところ、画面が出てきませんでした。
logo.rle のロゴも出てこないので、ハードウェア的にいろいろ異なっていそうです。

・/system/bin/wifi_switch.sh の件
RamosV65Pro,IQQ M1では、init.rc内で/system/etc/wifi_switch.shを実行しているけど、wifi_switch.shの内容を確認すると、存在しないファイルを指定している・・・
dhd_4760.ko dhd_4760b.koが存在するものはなんなのか?
→ Cruz Tablet T301でした。

# ls -l mnt/lib/wifi/modules/brcm/
合計 768
-rw-r--r-- 1 root root 406855  4月  8  2011 dhd_4760.ko
-rw-r--r-- 1 root root 372126  4月  8  2011 dhd_4760b.ko
#