画面キャプチャためにHong Kong PCCW版を入れて、直後にClockwork Recoveryを使ってOverseas General versionに戻したところ、IDEOS X5の無線LANが使えなくなりました。WiFiをオンにしようとすると、「エラー」と表示されてチェックが有効になりません。ユーザーデータに問題があるかと思って、Clockwork Recoveryの「wipe data/factory reset」で初期化したところ、現れたのはOverseas General版でなく香港版の工場出荷状態の画面でした。「ついに、やってしまったか」と思いましたが、良く考えれば当たり前。Clockwork Recoveryもfactory resetも、全てを置き換えるわけではなく、read only部分を除いたユーザーデータのみがbackup & recoveryされただけの事でした。香港版とOverseas General版では無線LANのON/OFFに変更があるらしく、ちぐはぐな組み合わせだと機能しないようです。
Overseas General versionのファームウェアに書き換えた後で、同じOverseas General版のバックアップからリカバリーを行ったところ、無線LANは無事に復活しました。
2011年5月29日日曜日
2011年5月28日土曜日
IDEOS X5の残念なファームウェア
ファームウェア更新中の画面。数分で完了します。
試しに香港版B153入れてみました。香港のSIMフリー端末を買った人は、こんな感じのショートカットが並んでいると思います。実に残念なデスクトップ。このペンギンがなかなか消せませんでした。
プログラムのアイコン。am730とかBubble Bash2とかIron Man2とか、見慣れないものは大概不要なアプリ。Overseas General vesionやMalaysia版、中国版には、こんなの入ってません。root取ってこいつらをコツコツ消していくことも出来ますが、さくっとファームウェアを書き換えたほうが、早く楽に幸せになれます。
香港版を書く前に使っていたOverseas General versionに戻すべく、Clockwork Recoveryを入れます。下は、recovery.imgを置き換えるためにbootloaderモードで起動中の画面。全体が紫一色。
recovery.imgを入れ替えて、リカバリーモードで起動したところ。反転していてわかりにくいですが、カーソルは backup&recovery の位置にあります。
無事にOverseas General versionがリカバリーできました。
めでたし、めでたし。
2011年5月27日金曜日
IDEOS X5(U8800)のバックアップとリカバリー
メジャーな機種は、Android marketからROM ManagerをインストールしてClockwork Recoveryを導入することが出来ますが、IDEOS X5用はROM Managerでダウンロード可能なリストに載っていません。xda developersにあるので、コレを使います。
導入方法は、Detailed Installationに書いてある通りです。
導入方法は、Detailed Installationに書いてある通りです。
- 電源を切る。microSDカードのdloadフォルダにアップデート用のファームウェアが無い状態にする。SDカードを抜いておいてもOK。PCとのUSB接続は抜いておく。
- [volume up]+[volume down]+[power]を3つ同時に押しながら電源を入れる。画面全体が紫色になったら(ブートローダーモード)次のステップへ。microSDのdloadフォルダにファームウェアがあると、ここで書き換えが走ってしまいます。microSDは外しておいたほうが安心です。
- USBで母艦PCと接続する。U8800がマスストレージデバイスとして認識され、/cust_backup が書き込み可の状態でマウントされる。
- オリジナルのリカバリーイメージである recovery.img の名前を変えておく(recovery.bak等)。Clockwork Recoveryのrecovery.imgをコピーして代わりに置く。
- タスクトレイのアイコンを使ってマスストレージをアンマウントし、USBケーブルを外す。バッテリーを一旦外してブートローダーモードを抜ける。以上。
リカバリーの手段が確保されれば、ファームウェアの入れ替えは気軽に出来ると思います。
2011年5月26日木曜日
IDEOS X5(U8800H)のファームウェアを更新
私が購入したIDEOS X5は、香港向けに出荷された物です。
という、そのままではかなり使いにくいものでした。WiFiテザリングは、待っていればそのうちサポートされるかなと思っていましたが、プリインストールアプリの邪魔臭さには辟易しました。これらは、roマウントされたファイルシステムにあるため、通常の方法ではアンインストールも出来ません。
最初は、/data/system/packages.xml を覗いて消したいアプリの当たりをつけ、root化&rw remountをした後にapkを消して無理やり削除していきました。しかし、.apk以外のファイルが一緒にインストールされているアプリもあったりして、アンインストールが不完全なのは明らかでした。
間もなく、新しい中国向けファームウェアでWiFiテザリングが可能なったという人が巨大掲示板に現れました。
IDEOS X5には、各国の事業者別にアップデート用ファームウェアが用意されていて、
いくつかは、http://wiki.modaco.com/index.php/Huawei_Firmware_U8800 にリストアップされています。U8800H用としてはマレーシア向けのファームウェアが比較的新しそうだったので、Malaysia MAXIS用に入れ替えてみたところ、見事にWiFiテザリングが有効になりました。
しかし、Malaysia版にした後、唯一の購入済みアプリであるToriSatと、青空文庫を読むための縦書きビューワがサポート対象外になってダウンロードできない事に気づきました。それではと言うことで中国版にしてみたのですが、こちらも駄目。さらにHuaweiの中文サイトを探した結果、Overseas General versionのファームウェアがありました。これを入れると、ToriSatのダウンロードが可能かつWiFiテザリング有効という、申し分の無い状態になることがわかりました。日本でIDEOS X5を使う人には、とってもオススメです。
- USBテザリングは出来るが、ポータブルWiFi AP機能は無効化されている
- ゲームやコミュニケーションサービス等のプリインストールアプリが山盛り
- プレインストールアプリは香港でしか使えない物が多く、Android標準の物以外は、ほぼ全てが邪魔
という、そのままではかなり使いにくいものでした。WiFiテザリングは、待っていればそのうちサポートされるかなと思っていましたが、プリインストールアプリの邪魔臭さには辟易しました。これらは、roマウントされたファイルシステムにあるため、通常の方法ではアンインストールも出来ません。
最初は、/data/system/packages.xml を覗いて消したいアプリの当たりをつけ、root化&rw remountをした後にapkを消して無理やり削除していきました。しかし、.apk以外のファイルが一緒にインストールされているアプリもあったりして、アンインストールが不完全なのは明らかでした。
間もなく、新しい中国向けファームウェアでWiFiテザリングが可能なったという人が巨大掲示板に現れました。
IDEOS X5には、各国の事業者別にアップデート用ファームウェアが用意されていて、
いくつかは、http://wiki.modaco.com/index.php/Huawei_Firmware_U8800 にリストアップされています。U8800H用としてはマレーシア向けのファームウェアが比較的新しそうだったので、Malaysia MAXIS用に入れ替えてみたところ、見事にWiFiテザリングが有効になりました。
しかし、Malaysia版にした後、唯一の購入済みアプリであるToriSatと、青空文庫を読むための縦書きビューワがサポート対象外になってダウンロードできない事に気づきました。それではと言うことで中国版にしてみたのですが、こちらも駄目。さらにHuaweiの中文サイトを探した結果、Overseas General versionのファームウェアがありました。これを入れると、ToriSatのダウンロードが可能かつWiFiテザリング有効という、申し分の無い状態になることがわかりました。日本でIDEOS X5を使う人には、とってもオススメです。
2011年5月23日月曜日
IDEOS X5を買った
約3週間前になりますが、ゴールデンウィークにIDEOS X5(U8800H)を買いました。
X5じゃないIDEOS(U8150-B)とどちらにするか悩みましたが、サクサク動くほうがいいと思ってX5を選びました。
800MHz帯に対応していないので、FOMAプラスエリアでは使えません。自宅と首都近郊、奥多摩、帰省先、関越自動車道、伊豆諸島と、自分の行動範囲は2.1GHz帯でカバーされているので、プラスエリア非対応でも問題ありません。
表は黒、裏は白。普通は表裏とも黒ですが、他機種が黒一色ばかりなので、自分の物だと見分けがつきやすいように、白を選びました。
X5じゃないIDEOS(U8150-B)とどちらにするか悩みましたが、サクサク動くほうがいいと思ってX5を選びました。
800MHz帯に対応していないので、FOMAプラスエリアでは使えません。自宅と首都近郊、奥多摩、帰省先、関越自動車道、伊豆諸島と、自分の行動範囲は2.1GHz帯でカバーされているので、プラスエリア非対応でも問題ありません。
表は黒、裏は白。普通は表裏とも黒ですが、他機種が黒一色ばかりなので、自分の物だと見分けがつきやすいように、白を選びました。
2011年4月24日日曜日
Androidの抱えるバージョン格差問題
先月から、毎日のようにAndroidのソースをさまよい歩く日々が続いています。何かアプリを作ろうという訳ではなくて、目的は専らトラブルシューティング。
何件か問題を解決していく過程でわかったのは、Androidは既にリリースしたバージョンに対するバグフィックスが殆どなされないという事でした。開発の先端バージョンでは、解決可能なバグは修正されているのですが、旧バージョンのブランチにマージされないのです。Froyoで修正された問題はEclairにはマージされませんし、Gingerbreadで修正された問題はEclair,Froyoにマージされません。最新バージョン以外では、修正の恩恵を受けられないのです。Androidのリリースエンジニアリングについて完全に把握しているわけでは無いので、もしかすると私が誤解しているのかもしれません。リリースブランチなど存在せず、masterブランチにタグが打たれているだけのようにも思えます。そう思えるほど、旧バージョンのサポートは手薄です。まさに「放置」と呼ぶにふさわしい状況。具体的な例は挙げられないのですが、リセットに至るようなレベルのバグでも放置です。
問題の原因を発見して解決方法を考え、それが最近のバージョンで修正されている事実を初めて知った時の脱力感は忘れられません。それ以来、問題解決の手法は、リポジトリの履歴を辿って、既に修正がcommitされていないか探すところから始めるようになりました。そして、このやり方で複数の問題が解決されつつあります。
未だにEclair,Froyoなどという旧バージョンを相手に開発している体制に問題があると言われればそれまでかも知れません。対象の開発スピードが速いのだから、もっとスピーディーに追従すべきというのは正論でしょう。ですが、Androidの公開リポジトリを見ると、「そっちもバージョン上げないの?」と言いたくなる問題が存在します。
実はAndroidには、バグ修正のリリース間格差だけでなく、同じリリースの中でもexternalの下は数年前の旧バージョンのまま放置という、モジュール間格差が存在します。お陰で、カーネルの更新にexternalが追いつかず、externalの下のコマンドが使っている旧APIがカーネルから削除されるという問題まで生じています。これは、Androidのバージョンを上げても解決されません。むしろ、Androidのバージョンを上げるとカーネルのバージョンが進むので、静かに進行していた問題が顕在化します。Googleがカーネル以外を含んだ全体をきちんとサポートしていればいいのですが、それが期待できれば苦労はしません。
旧バージョンに居残っても、新バージョンに進んでも問題にぶち当たるのがAndroidです。とは言っても、新バージョンへの移行は当然の流れですし、全体的に見れば新しい方が解決すべき問題は減る傾向にあるので、前へ進んでいく以外の選択はありません。
何件か問題を解決していく過程でわかったのは、Androidは既にリリースしたバージョンに対するバグフィックスが殆どなされないという事でした。開発の先端バージョンでは、解決可能なバグは修正されているのですが、旧バージョンのブランチにマージされないのです。Froyoで修正された問題はEclairにはマージされませんし、Gingerbreadで修正された問題はEclair,Froyoにマージされません。最新バージョン以外では、修正の恩恵を受けられないのです。Androidのリリースエンジニアリングについて完全に把握しているわけでは無いので、もしかすると私が誤解しているのかもしれません。リリースブランチなど存在せず、masterブランチにタグが打たれているだけのようにも思えます。そう思えるほど、旧バージョンのサポートは手薄です。まさに「放置」と呼ぶにふさわしい状況。具体的な例は挙げられないのですが、リセットに至るようなレベルのバグでも放置です。
問題の原因を発見して解決方法を考え、それが最近のバージョンで修正されている事実を初めて知った時の脱力感は忘れられません。それ以来、問題解決の手法は、リポジトリの履歴を辿って、既に修正がcommitされていないか探すところから始めるようになりました。そして、このやり方で複数の問題が解決されつつあります。
未だにEclair,Froyoなどという旧バージョンを相手に開発している体制に問題があると言われればそれまでかも知れません。対象の開発スピードが速いのだから、もっとスピーディーに追従すべきというのは正論でしょう。ですが、Androidの公開リポジトリを見ると、「そっちもバージョン上げないの?」と言いたくなる問題が存在します。
実はAndroidには、バグ修正のリリース間格差だけでなく、同じリリースの中でもexternalの下は数年前の旧バージョンのまま放置という、モジュール間格差が存在します。お陰で、カーネルの更新にexternalが追いつかず、externalの下のコマンドが使っている旧APIがカーネルから削除されるという問題まで生じています。これは、Androidのバージョンを上げても解決されません。むしろ、Androidのバージョンを上げるとカーネルのバージョンが進むので、静かに進行していた問題が顕在化します。Googleがカーネル以外を含んだ全体をきちんとサポートしていればいいのですが、それが期待できれば苦労はしません。
旧バージョンに居残っても、新バージョンに進んでも問題にぶち当たるのがAndroidです。とは言っても、新バージョンへの移行は当然の流れですし、全体的に見れば新しい方が解決すべき問題は減る傾向にあるので、前へ進んでいく以外の選択はありません。
2011年3月27日日曜日
AlertDialogで二重クリック
androidのAlertDialogは、ボタンが一回押されたら閉じてしまう。だから、ボタンは一回しか押されない。そう思っている時期が私にもありました。
でも、違いました。AlertDialogは、二度押しを防ぐ仕様にはなっていません。
最近、AlertDialogのボタンが二度押しされていると思わせるような事があったので、簡単なサンプルを書いてエミュレーターで試してみました。
でも、違いました。AlertDialogは、二度押しを防ぐ仕様にはなっていません。
最近、AlertDialogのボタンが二度押しされていると思わせるような事があったので、簡単なサンプルを書いてエミュレーターで試してみました。
new AlertDialog.Builder(DialogTestActivity.this) .setTitle("Dialog Test") .setMessage("Are you OK?") .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Log.d(TAG, "Clicked OK."); } }) .setNegativeButton("Cancel", null).show();こんなコードを書いて、表示されたダイアログのOKボタンをダブルクリックすると、二重押しを示すログが残ります。
03-27 10:02:27.576: DEBUG/DialogTest(317): Clicked OK. 03-27 10:02:27.629: DEBUG/DialogTest(317): Clicked OK.OnClickListener()の中に多重実行を想定していない処理が書いてあると、問題が起きるかも知れません。
登録:
投稿 (Atom)