2010年9月5日日曜日

Xperiaでプリインストールソフトを削除する

普段からeclipseなりAndroid開発やってる人、せめてlinuxいじったことある人にはたいしたことないのだろうが、Win、VxWorks、INtimeでC++な自分はかなり手間取ったのでメモしておく。

※実施時のシステムバージョンはビルドR1EA029。
※セキュリティやばいところはちゃんと戻す。/systemをro、unroot化、提供元不明アプリのインストール防止。

(1) Android SDKをPCにインストール

1.JDK5以上をインストール
から。実施したときはJDK6Update21だった。

2.Android SDKをダウンロードして解凍
からローカルに落とす。実施したときはr6だった。
c:\の直下にそのまま解凍した。

3.Android SDKをインストール
解凍したフォルダの直下にある「SDK Setup.exe」を実行。
※リリースによっては「tools」フォルダの中にあるらしい。
画面左側「Avairable Packges」を選んで「https://dl-ssl.google.com/android/repository/repository.xml」にチェックし、「Install Selected」をクリック。
「Choose Packages to Install」画面で「Accept All」をクリックし、インストール。

4.Android SDKツールのパスを通す
解凍したフォルダ下の「tools」のパスを通す(その中のadb.exeを使いたいので)。


(2) root化ツールUniversal AndrootをXperiaにインストール

1.root化ツールをダウンロードする
検索かけて探す。実施したときは1.6.1だった。
ダウンロードしたファイルを解凍して「UniversalAndroot.apk」を適当なフォルダに置く。

2.Xperia側でインストール準備する。
Xperiaの「設定」→「アプリケーション」にて、
・「提供元不明のアプリ」をチェック
・「開発」→「USBデバッグ」をチェック
しておく。
その後、Xperiaに付属のUSBケーブルでPCと接続する。USBデバッグモードで接続されるはず。
※USBデバッグのデバドラ要求されたら・・・どうするんだろ。Media Go入れてたせいかデバドラ要求されたことない。

3.デバイス認識を確認
コマンドプロンプトを起動して「adb devices」と入力し、「ほげほげ device」とか出てくればOK。

4.Xperiaにインストール
コマンドプロンプトを起動してapkファイルの置き場所に移動し、「adb install UniversalAndroot.apk」とやればインストールできる。
「Universal Androot」のアイコンがアプリ一覧に出てくるはず。


(3) Xperiaにて削除のお膳立て

1.削除したいアプリのプロセスを落とす
必要あるかどうかわからないけど、削除できたときは殺していたので。自分はアストロファイルマネージャを使って落とした。

2.Root化
「Universal Androot」を起動し、Root化する。

3.デバッグシェル起動し、スーパーユーザー権限を取得
コマンドプロンプトで「adb shell」と入れる。「$」が出てきたら「su」と入れてenterを押すと、Xperia側にて権限を渡してもいいのか聞いてくるのでOKすると、「$」が「#」になるはず。

4./systemに書き込み権限を付与
/systemが読み取り専用になっているので、「$ mount -o remount,rw -t yaffs2 /dev/block/mtdblock2 /system」と入力すると書き込み権限が与えられる。


(4) デバッグシェルから削除
コマンドを入れて削除する。たとえば「rm /system/app/mox*」とか入れるとmoxierメールを殲滅できる。
削除しおわったら「$ roboot」でリブート。
※アストロファイルマネージャで削除できると記述されているブログもあったが、自分のXperiaでは「ファイル削除中エラー」などと表示されて削除できなかった。


(x) 参考文献
・逆引きAndroid入門

・コムギドットネット

・Digital Surviver

・YT-1300

2010年2月12日金曜日

INtimeで例外がバグる

INtimeをいじりはじめた。
PC等にかなり制限が多い(IRQがWinと重複できない等)ので電気屋さんは大変だが、ソフト屋としてはVC++が使えるので他の組み込み環境よりはコーディングが楽だ。
# Eclipse+CDTは重いしソースコード管理が変だと思う。

で、使っているINtimeはver.3.13なのだが、リンクされるC++ランタイムにバグがあり、例外がまともに使えない。参照でcatchすると参照先アドレスがおかしいのである。実体catchならバグらないが、例外オブジェクトにエラー詳細情報を詰めているのでコピーコストが大きくなってしまう。

残念ながらver.3.13でのバグで、パッチリリースの予定はないらしい。4.0まで待たないといけないのか・・・メジャーバージョンアップ直後のOSは製品に使うのが怖いのだが。

他、ver.3.13にはqsort()にバグがあったりして、品質面で不安が残る。全体的にはVxWorksなんかより遥かに良くてコストが下がるので、移行すること自体は大賛成なのだが。