MIPS Android(JZ4760)用nicoWnnG version 2012.0325.1 独自ビルド版


(2013/06/21 追記 start)
最新版は「MIPS Android(JZ4760)用nicoWnnG version 2013.0425.1 独自ビルド版」にて配布中。

(追記 end)


MIPS Android(JZ4760)用nicoWnnG version 2012.0905.1 独自ビルド版」を公開しました。


MIPS Androidで動作するnicoWnnG
2012/03/27時点での最新版(Version 2012.0325.1)にアップデートしました。

ダウンロード: nicoWnnG-2012.0325.1-mips.apk
ダウンロード: nicoWnnG-2012.0320.2-mips.apk
ダウンロード: nicoWnnG-2012.0305.2-mips.apk

[注意事項]
この独自ビルド版nicoWnnGの配布にあたり、GORRYさんに許可を取っています。

この独自ビルド版nicoWnnGは、ソースの変更を行っていません。コンパイル時にMIPS/MIPS-R2/MIPS-R2 SoftFloat用のバイナリを作成するようにしただけのものです。
このため、前のバージョンからの変更内容については、オリジナル版を参照願います。

オリジナルのnicoWnnGがすでにインストールされていると、こちらの独自ビルド版はインストールに失敗します。
逆に、こちらの独自ビルド版があると、オリジナルのインストールに失敗します。
これは、この独自ビルド版は、オリジナルのnicoWnnGと同じソース・パッケージ名で作成されていますが、署名が異なっていることによるものです。
といっても、現状のオリジナル版はMIPS用のライブラリが内蔵されていないので、そもそものインストールに失敗するので、支障は無いですが・・・

なお、今回の独自ビルド版では、MIPS、MIPS-R2、MIPS-R2 SF用のバイナリのみとし、オリジナル版に含まれるARM,x86用バイナリを削除しています。

ronzi(溶智) A3での動作確認をしました。

それ以外の機種での動作は未確認です。
とりあえずMIPS-R2用バイナリとMIPS-R2 SF用バイナリを追加してはいますが、AMT-7001搭載のICCO T22とかでは動かない可能性は高そうです。

旧バージョン:
2012.0222.1版
2011.1207.1版
2011.1205.1版
2011.1115.1版
2011.0823.2版
2011.0503.1版

独自ビルド版のトピック
・Android NDK for MIPS r7mでコンパイルしています。
・MIPS r1用/MIPS r2用/MIPS r2 SF用の3種類のバイナリが含まれています。
・apk容量削減のため、MIPS用バイナリのみとしました。
・全体の再コンパイルは行わず、libディレクトリのみをapktoolを使って入れ替えるという邪法を使っています。
・署名が当サイトのものとなっています。

MIPS Android(JZ4760)用nicoWnnG version 2012.0222.1 独自ビルド版


(2013/06/21 追記 start)
最新版は「MIPS Android(JZ4760)用nicoWnnG version 2013.0425.1 独自ビルド版」にて配布中。

(追記 end)


2012.0325.1版を公開しました。

———————————————————-
MIPS Androidで動作するnicoWnnG
2012/02/22時点での最新版(Version 2012.0222.1)にアップデートしました。

ダウンロード: nicoWnnG-2012.0325.1-mips.apk
ダウンロード: nicoWnnG-2012.0305.2-mips.apk
ダウンロード: nicoWnnG-2012.0222.1-mips.apk

ダウンロード: nicoWnnG-2012.0215.1-mips.apk
ダウンロード: nicoWnnG-2012.0213.4-mips.apk
ダウンロード: nicoWnnG-2012.0213.3-mips.apk
ダウンロード: nicoWnnG-2012.0213.2-mips.apk
ダウンロード: nicoWnnG-2012.0213.1-mips.apk

[注意事項]
この独自ビルド版nicoWnnGの配布にあたり、GORRYさんに許可を取っています。

この独自ビルド版nicoWnnGは、ソースの変更を行っていません。コンパイル時にMIPS/MIPS-R2/MIPS-R2 SoftFloat用のバイナリを作成するようにしただけのものです。
このため、前のバージョンからの変更内容については、オリジナル版を参照願います。

オリジナルのnicoWnnGがすでにインストールされていると、こちらの独自ビルド版はインストールに失敗します。
逆に、こちらの独自ビルド版があると、オリジナルのインストールに失敗します。
これは、この独自ビルド版は、オリジナルのnicoWnnGと同じソース・パッケージ名で作成されていますが、署名が異なっていることによるものです。
といっても、現状のオリジナル版はMIPS用のライブラリが内蔵されていないので、そもそものインストールに失敗するので、支障は無いですが・・・

なお、今回の独自ビルド版では、MIPS、MIPS-R2、MIPS-R2 SF用のバイナリのみとし、オリジナル版に含まれるARM,x86用バイナリを削除しています。

ronzi(溶智) A3での動作確認をしました。

それ以外の機種での動作は未確認です。
とりあえずMIPS-R2用バイナリとMIPS-R2 SF用バイナリを追加してはいますが、AMT-7001搭載のICCO T22とかでは動かない可能性は高そうです。

旧バージョン:
2011.1207.1版
2011.1205.1版
2011.1115.1版
2011.0823.2版
2011.0503.1版

独自ビルド版のトピック
・Android NDK for MIPS r7mでコンパイルしています。
・MIPS r1用/MIPS r2用/MIPS r2 SF用の3種類のバイナリが含まれています。
・apk容量削減のため、MIPS用バイナリのみとしました。
・全体の再コンパイルは行わず、libディレクトリのみをapktoolを使って入れ替えるという邪法を使っています。
・署名が当サイトのものとなっています。

MIPS Android(JZ4760)用nicoWnnG version 2011.1115.1 独自ビルド版


(2013/06/21 追記 start)
最新版は「MIPS Android(JZ4760)用nicoWnnG version 2013.0425.1 独自ビルド版」にて配布中。

(追記 end)


— 以下、元の記事 —
MIPS Androidで動作するnicoWnnGを2011/11/15時点での最新版(Version 2011.1115.1)にアップデートしました。(2011/11/15 12:10: 2011.1111.1→2011.1115.1 に差し替えました)

ダウンロード: nicoWnnG-2012.0325.1-mips.apk
ダウンロード: nicoWnnG-2011.1111.1-mips-2.apk (23:15 署名を忘れていたのを修正しました)
ダウンロード: nicoWnnG-2011.1115.1-mips.apk

[注意事項]
オリジナルのnicoWnnGがすでにインストールされていると、こちらの独自ビルド版はインストールに失敗します。
逆に、こちらの独自ビルド版があると、オリジナルのインストールに失敗します。

これは、この独自ビルド版は、オリジナルのnicoWnnGと同じソース・パッケージ名で作成されていますが、署名が異なっていることによるものです。

といっても、オリジナル版はMIPS用のライブラリが内蔵されていないので、そもそものインストールに失敗しますが・・・
なお、今回の独自ビルド版では、MIPS、MIPS-R2用のバイナリのみとし、オリジナル版に含まれるARM,x86用バイナリを削除しています。

ronzi(溶智) A3での動作確認をしました。(2011/11/14 23:15)

それ以外の機種での動作は未確認です。
過去のバージョンではAMT-7001を積んだICOO T22では動作しなかったようですが、MIPS-R2用バイナリを追加したこのバージョンでは動くといいんですが・・・

旧バージョン:
2011.0823.2版
2011.0503.1版

独自ビルド版のトピック
・いままでAndroid NDK for MIPSのr5bでコンパイルしていましたが、r6mに変更しました。
・いままでMIPS r1用のバイナリのみでしたが、MIPS r2用のバイナリも含めました。
・apk容量削減のため、MIPS用バイナリのみとしました。
・全体の再コンパイルは行わず、libディレクトリのみをapktoolを使って入れ替えています。

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