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サポートっぽい記述がある

 

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
#

Jz4760系Androidのbuild.propの違い

firmwareが容易に展開できたJz4760搭載Android機種とJz4770搭載Android機種のbuild.propを比較してみた。(2011/11/01:NOVO7 Basicについて追加)

対象機種
・ronzi A3
・Cruz Tablet T301
・IQQ M1
・Ramos V65PRO
・NOVO7 Basic

比較のベースはronzi A3 20110503版のbuild.prop。

機種ごとに違って当然である項目以外にある、パラメータの差異は以下のようになった。

・「dalvik.vm.dexopt-flags」の値
ronzi A3, Cruz, V65PRO: dalvik.vm.dexopt-flags=m=y,v=n
IQQ M1,NOVO7 Basic: dalvik.vm.dexopt-flags=m=y,v=n,o=a

v=nは-Xverify:none
o=aは-Xdexopt:all
o=vもしくは、o=を指定しない場合は-Xdexopt:verified
m=yがよく分からない。

たぶん「m=y,v=n,o=a」が適切そうな気がするが、カスタムfirmwareでは「m=y,v=n」にしている。

・「ro.kernel.android.checkjni」の値
ronzi A3: ro.kernel.android.checkjni=1
それ以外: ro.kernel.android.checkjni=0
開発中は「1」で、普通は「0」ということなので、カスタムfirmwareでは「0」を採用。

・「ro.sf.lcd_density」の値
ronzi A3, Cruz: 設定無し
IQQ M1, V65PRO, NOVO7 Basic: ro.sf.lcd_density=160
カスタムfirmwareでは「160」としているが、120か130ぐらいでもいいかな?というところ。

・製品の地域設定
中国製品は以下
ro.product.locale.language=zh
ro.product.locale.region=CN
アメリカ製品は以下
ro.product.locale.language=en
ro.product.locale.region=US
カスタムfirmwareではアメリカ設定を採用

・地域やタイムゾーン設定 その2
設定されている場合がある
persist.sys.language=
persist.sys.country=
persist.sys.localevar=
persist.sys.timezone=
カスタムfirmwareでは、この設定は使っていない。

以下は資料。

ベースとなるronzi A3 20110503版のbuild.prop

# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=FRG83
ro.build.display.id=lynx-eng 2.2.1 FRG83 eng.android.20110503.162254 test-keys
ro.build.version.incremental=eng.android.20110503.162254
ro.build.version.sdk=8
ro.build.version.codename=REL
ro.build.version.release=2.2.1
ro.build.date=2011年 05月 03日 星期二 17:14:33 CST
ro.build.date.utc=1304414073
ro.build.type=eng
ro.build.user=android
ro.build.host=android-desktop
ro.build.tags=test-keys
ro.product.model=lynx
ro.product.brand=lynx
ro.product.name=lynx
ro.product.device=lynx
ro.product.board=
ro.product.cpu.abi=mips
ro.product.manufacturer=ingenic
ro.product.locale.language=zh
ro.product.locale.region=CN
ro.wifi.channels=
ro.board.platform=
# ro.build.product is obsolete; use ro.product.device
ro.build.product=lynx
# Do not try to parse ro.build.description or .fingerprint
ro.build.description=lynx-eng 2.2.1 FRG83 eng.android.20110503.162254 test-keys
ro.build.fingerprint=lynx/lynx/lynx/:2.2.1/FRG83/eng.android.20110503.162254:eng/test-keys
# end build properties
#
# system.prop for lynx
#

rild.libpath=/system/lib/libreference-ril.so
rild.libargs=-d /dev/ttyS2

#ro.sf.lcd_density=240

#
# ADDITIONAL_BUILD_PROPERTIES
#
ro.config.notification_sound=OnTheHunt.ogg
ro.config.alarm_alert=Alarm_Classic.ogg
media.stagefright.enable-player=true
media.stagefright.enable-meta=true
media.stagefright.enable-scan=true
media.stagefright.enable-http=true
ro.kernel.android.checkjni=1
ro.setupwizard.mode=OPTIONAL
dalvik.vm.dexopt-flags=m=y,v=n
net.bt.name=Android
dalvik.vm.stack-trace-file=/data/anr/traces.txt
dalvik.vm.heapsize=24m

ronziA3のbuild.propとCruz Tablet T301のbuild.propの違い

@@ -1,21 +1,21 @@
 # begin build properties
 # autogenerated by buildinfo.sh
 ro.build.id=FRG83
-ro.build.display.id=lynx-eng 2.2.1 FRG83 eng.android.20110503.162254 test-keys
-ro.build.version.incremental=eng.android.20110503.162254
+ro.build.display.id=T301-eng 2.2.1 FRG83 eng.szhao.20110513.013344
+ro.build.version.incremental=eng.szhao.20110513.013344
 ro.build.version.sdk=8
 ro.build.version.codename=REL
 ro.build.version.release=2.2.1
-ro.build.date=2011年 05月 03日 星期二 17:14:33 CST
-ro.build.date.utc=1304414073
+ro.build.date=Fri May 13 02:02:22 CST 2011
+ro.build.date.utc=1305223342
 ro.build.type=eng
-ro.build.user=android
-ro.build.host=android-desktop
+ro.build.user=szhao
+ro.build.host=szhao-desktop
 ro.build.tags=test-keys
-ro.product.model=lynx
-ro.product.brand=lynx
-ro.product.name=lynx
-ro.product.device=lynx
+ro.product.model=T301
+ro.product.brand=tablet_p2
+ro.product.name=tablet_p2
+ro.product.device=tablet_p2
 ro.product.board=
 ro.product.cpu.abi=mips
 ro.product.manufacturer=ingenic
-ro.product.locale.language=zh
-ro.product.locale.region=CN
+ro.product.locale.language=en
+ro.product.locale.region=US
 ro.wifi.channels=
 ro.board.platform=
 # ro.build.product is obsolete; use ro.product.device
-ro.build.product=lynx
+ro.build.product=tablet_p2
 # Do not try to parse ro.build.description or .fingerprint
-ro.build.description=lynx-eng 2.2.1 FRG83 eng.android.20110503.162254 test-keys
-ro.build.fingerprint=lynx/lynx/lynx/:2.2.1/FRG83/eng.android.20110503.162254:eng/test-keys
+ro.build.description=T301-eng 2.2.1 FRG83 eng.szhao.20110513.013344
+ro.build.fingerprint=T301/tablet_p2/tablet_p2/:2.2.1/FRG83/eng.szhao.20110513.013344:eng/test-keys
 # end build properties
 #
-# system.prop for lynx
+# system.prop for tablet_p2
 #

 rild.libpath=/system/lib/libreference-ril.so
@@ -47,7 +47,7 @@
 media.stagefright.enable-meta=true
 media.stagefright.enable-scan=true
 media.stagefright.enable-http=true
-ro.kernel.android.checkjni=1
+ro.kernel.android.checkjni=0
 ro.setupwizard.mode=OPTIONAL
 dalvik.vm.dexopt-flags=m=y,v=n
 net.bt.name=Android

ronziA3のbuild.propとIQQ M1のbuild.propの差

@@ -1,21 +1,21 @@
 # begin build properties
 # autogenerated by buildinfo.sh
 ro.build.id=FRG83
-ro.build.display.id=lynx-eng 2.2.1 FRG83 eng.android.20110503.162254 test-keys
-ro.build.version.incremental=eng.android.20110503.162254
+ro.build.display.id=xam5001-eng 2.2.1 FRG83 eng.clivia.20110713.174656 test-keys
+ro.build.version.incremental=eng.clivia.20110713.174656
 ro.build.version.sdk=8
 ro.build.version.codename=REL
 ro.build.version.release=2.2.1
-ro.build.date=2011年 05月 03日 星期二 17:14:33 CST
-ro.build.date.utc=1304414073
+ro.build.date=2011年 07月 13日 星期三 17:52:14 CST
+ro.build.date.utc=1310550734
 ro.build.type=eng
-ro.build.user=android
-ro.build.host=android-desktop
+ro.build.user=clivia
+ro.build.host=ubuntu
 ro.build.tags=test-keys
-ro.product.model=lynx
-ro.product.brand=lynx
-ro.product.name=lynx
-ro.product.device=lynx
+ro.product.model=xam5001
+ro.product.brand=xam5001
+ro.product.name=xam5001
+ro.product.device=xam5001
 ro.product.board=
 ro.product.cpu.abi=mips
 ro.product.manufacturer=ingenic
@@ -24,19 +24,23 @@
 ro.wifi.channels=
 ro.board.platform=
 # ro.build.product is obsolete; use ro.product.device
-ro.build.product=lynx
+ro.build.product=xam5001
 # Do not try to parse ro.build.description or .fingerprint
-ro.build.description=lynx-eng 2.2.1 FRG83 eng.android.20110503.162254 test-keys
-ro.build.fingerprint=lynx/lynx/lynx/:2.2.1/FRG83/eng.android.20110503.162254:eng/test-keys
+ro.build.description=xam5001-eng 2.2.1 FRG83 eng.clivia.20110713.174656 test-keys
+ro.build.fingerprint=xam5001/xam5001/xam5001/:2.2.1/FRG83/eng.clivia.20110713.174656:eng/test-keys
 # end build properties
 #
-# system.prop for lynx
+# system.prop for xam5001
 #

 rild.libpath=/system/lib/libreference-ril.so
 rild.libargs=-d /dev/ttyS2

-#ro.sf.lcd_density=240
+ro.sf.lcd_density=160
+persist.sys.language=zh
+persist.sys.country=CN
+persist.sys.localevar=
+persist.sys.timezone=Asia/Shanghai

 #
 # ADDITIONAL_BUILD_PROPERTIES
@@ -47,9 +51,9 @@
 media.stagefright.enable-meta=true
 media.stagefright.enable-scan=true
 media.stagefright.enable-http=true
-ro.kernel.android.checkjni=1
+ro.kernel.android.checkjni=0
 ro.setupwizard.mode=OPTIONAL
-dalvik.vm.dexopt-flags=m=y,v=n
+dalvik.vm.dexopt-flags=m=y,v=n,o=a
 net.bt.name=Android
 dalvik.vm.stack-trace-file=/data/anr/traces.txt
 dalvik.vm.heapsize=24m

ronzi A3のbuild.propとRamos V65のbuild.propの差

@@ -1,21 +1,21 @@
 # begin build properties
 # autogenerated by buildinfo.sh
 ro.build.id=FRG83
-ro.build.display.id=lynx-eng 2.2.1 FRG83 eng.android.20110503.162254 test-keys
-ro.build.version.incremental=eng.android.20110503.162254
+ro.build.display.id=lynx-eng 2.2.1 FRG83 eng.leo_lee.20110610.103429 test-keys
+ro.build.version.incremental=eng.leo_lee.20110610.103429
 ro.build.version.sdk=8
 ro.build.version.codename=REL
 ro.build.version.release=2.2.1
-ro.build.date=2011年 05月 03日 星期二 17:14:33 CST
-ro.build.date.utc=1304414073
+ro.build.date=2011年 06月 10日 星期五 10:48:34 CST
+ro.build.date.utc=1307674114
 ro.build.type=eng
-ro.build.user=android
-ro.build.host=android-desktop
+ro.build.user=leo_lee
+ro.build.host=jetserver-desktop
 ro.build.tags=test-keys
-ro.product.model=lynx
-ro.product.brand=lynx
-ro.product.name=lynx
-ro.product.device=lynx
+ro.product.model=Ramos V65PRO
+ro.product.brand=Ramos
+ro.product.name=Ramos V65PRO
+ro.product.device=V65PRO
 ro.product.board=
 ro.product.cpu.abi=mips
 ro.product.manufacturer=ingenic
@@ -26,8 +26,8 @@
 # ro.build.product is obsolete; use ro.product.device
 ro.build.product=lynx
 # Do not try to parse ro.build.description or .fingerprint
-ro.build.description=lynx-eng 2.2.1 FRG83 eng.android.20110503.162254 test-keys
-ro.build.fingerprint=lynx/lynx/lynx/:2.2.1/FRG83/eng.android.20110503.162254:eng/test-keys
+ro.build.description=lynx-eng 2.2.1 FRG83 eng.leo_lee.20110610.103429 test-keys
+ro.build.fingerprint=lynx/lynx/lynx/:2.2.1/FRG83/eng.leo_lee.20110610.103429:eng/test-keys
 # end build properties
 #
 # system.prop for lynx
@@ -36,7 +36,7 @@
 rild.libpath=/system/lib/libreference-ril.so
 rild.libargs=-d /dev/ttyS2

-#ro.sf.lcd_density=240
+ro.sf.lcd_density=160

 #
 # ADDITIONAL_BUILD_PROPERTIES
@@ -47,9 +47,10 @@
 media.stagefright.enable-meta=true
 media.stagefright.enable-scan=true
 media.stagefright.enable-http=true
-ro.kernel.android.checkjni=1
+ro.kernel.android.checkjni=0
 ro.setupwizard.mode=OPTIONAL
 dalvik.vm.dexopt-flags=m=y,v=n
 net.bt.name=Android
 dalvik.vm.stack-trace-file=/data/anr/traces.txt
 dalvik.vm.heapsize=24m
+persist.sys.timezone=Asia/Shanghai

ronzi A3のbuild.propとNOVO7 Basicのbuild.propの差

@@ -1,21 +1,21 @@
 # begin build properties
 # autogenerated by buildinfo.sh
 ro.build.id=FRG83
-ro.build.display.id=lynx-eng 2.2.1 FRG83 eng.android.20110503.162254 test-keys
-ro.build.version.incremental=eng.android.20110503.162254
+ro.build.display.id=npm701-eng 2.2.1 FRG83 eng.szhao.20111029.043636 test-keys
+ro.build.version.incremental=eng.szhao.20111029.043636
 ro.build.version.sdk=8
 ro.build.version.codename=REL
 ro.build.version.release=2.2.1
-ro.build.date=2011年 05月 03日 星期二 17:14:33 CST
-ro.build.date.utc=1304414073
+ro.build.date=Sat Oct 29 05:09:13 CST 2011
+ro.build.date.utc=1319836153
 ro.build.type=eng
-ro.build.user=android
-ro.build.host=android-desktop
+ro.build.user=szhao
+ro.build.host=szhao-desktop
 ro.build.tags=test-keys
-ro.product.model=lynx
-ro.product.brand=lynx
-ro.product.name=lynx
-ro.product.device=lynx
+ro.product.model=npm701
+ro.product.brand=npm701
+ro.product.name=npm701
+ro.product.device=npm701
 ro.product.board=
 ro.product.cpu.abi=mips
 ro.product.manufacturer=ingenic
@@ -24,19 +24,24 @@
 ro.wifi.channels=
 ro.board.platform=
 # ro.build.product is obsolete; use ro.product.device
-ro.build.product=lynx
+ro.build.product=npm701
 # Do not try to parse ro.build.description or .fingerprint
-ro.build.description=lynx-eng 2.2.1 FRG83 eng.android.20110503.162254 test-keys
-ro.build.fingerprint=lynx/lynx/lynx/:2.2.1/FRG83/eng.android.20110503.162254:eng/te
st-keys
+ro.build.description=npm701-eng 2.2.1 FRG83 eng.szhao.20111029.043636 test-keys
+ro.build.fingerprint=npm701/npm701/npm701/:2.2.1/FRG83/eng.szhao.20111029.043636:en
g/test-keys
 # end build properties
 #
-# system.prop for lynx
+# system.prop for npm701
 #

 rild.libpath=/system/lib/libreference-ril.so
-rild.libargs=-d /dev/ttyS2
+rild.libargs=-d /dev/ttyS3

-#ro.sf.lcd_density=240
+ro.sf.lcd_density=160
+
+persist.sys.language=zh
+persist.sys.country=CN
+persist.sys.localevar=
+persist.sys.timezone=Asia/Shanghai

 #
 # ADDITIONAL_BUILD_PROPERTIES
@@ -47,9 +52,9 @@
 media.stagefright.enable-meta=true
 media.stagefright.enable-scan=true
 media.stagefright.enable-http=true
-ro.kernel.android.checkjni=1
+ro.kernel.android.checkjni=0
 ro.setupwizard.mode=OPTIONAL
-dalvik.vm.dexopt-flags=m=y,v=n
+dalvik.vm.dexopt-flags=m=y,v=n,o=a
 net.bt.name=Android
 dalvik.vm.stack-trace-file=/data/anr/traces.txt
 dalvik.vm.heapsize=24m

ronzi A3 カスタムfirmware 20111018版

ronzi A3のカスタムfirmwareを新しく作りました。

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 2011_01_13-signed.zip
* replace /system/framework from Ramos V65PRO firmware
* change some /system/build.prop value, it’s from Ramos V65PRO.
* add Dalvik Turbo VM.
* 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.

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

変更点
・中華なapkを消しました
・英語圏用IMEと日本語圏用IME(nicoWnnG)を追加しました
・マーケット関連のapkを更新しました
・frameworkライブラリをRamos V65PROのものと置き換えてみました
・/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として配置しました。

* flashtool :A3_updatetools_pack.zip http://www.multiupload.com/P5J4282P0E
* firmware: ronziA3_20111018a.zip http://www.multiupload.com/AZJ1NXPQ76

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

おまけ
DalvikTurboのドキュメントを見ると、FPU搭載でも標準設定ではFPUを使用しない。
「/data/local.prop」に「ddac.enableFpu=true」という記述を入れることで、FPUを使うようになる、と書いてある。
上記のカスタムfirmwareでは、この設定を入れている。

ちなみに設定してみた場合の起動直後のlogcatメッセージは以下の様になる。

D/AndroidRuntime(   81): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
D/AndroidRuntime(   81): CheckJNI is OFF
I/dalvikvm(   81): Init:sysconf(_SC_PAGESIZE)=4096
I/dalvikvm(   81): DalvikTurbo: build FRG83 @ 199354 on May 26 2011 00:41:37
I/dalvikvm(   81): CM_init: dvmPlatformInvoke @ &0x7d711000
I/dalvikvm(   81): CM_getProperty(ddac.traceLog) => NULL
I/dalvikvm(   81): CM_getProperty(ddac.threshold) => NULL
I/dalvikvm(   81): CM_init: threshold=1000
I/dalvikvm(   81): CM_getProperty(ddac.firstFrag) => NULL
I/dalvikvm(   81): CM_getProperty(ddac.lastFrag) => NULL
I/dalvikvm(   81): CM_getProperty(ddac.onlyFrag) => NULL
I/dalvikvm(   81): CM_getProperty(ddac.printFrags) => NULL
I/dalvikvm(   81): CM_getProperty(ddac.printFragsFail) => NULL
I/dalvikvm(   81): CM_getProperty(ddac.printFragsInline) => NULL
I/dalvikvm(   81): CM_getProperty(ddac.onlyAmStart) => NULL
I/dalvikvm(   81): CM_getProperty(ddac.enableFpu):P => 'true'
I/dalvikvm(   81): CM_getProperty(ddac.livenessAnalysis) => NULL
I/dalvikvm(   81): CM_getProperty(ddac.enableInlining) => NULL
I/dalvikvm(   81): CM_getProperty(ddac.nullPageSize) => NULL
I/dalvikvm(   81): CM_getProperty(com.jbed.mips.txx) => NULL
I/dalvikvm(   81): CM_getProperty(com.jbed.mips.sigbusAdj) => NULL
I/dalvikvm(   81): CM_init: 8 x 32Kb buffers at 0x7d7c0000..0x7d800000
I/dalvikvm(   81): CM_getProperty(ddac.queueLen) => NULL

ちゃんと、「CM_getProperty(ddac.enableFpu):P => ‘true’」というのが認識されているようだ。