2010年9月22日水曜日

android ソースコード取得と参照

Eclipse から android のソースを参照できるようにしました。

その手順をメモしておきます。

ちなみに、環境は Windows Vista Ultimate SP2 32bit です。

android 2.2 のソースを参照できるようにしました。

  1. Cygwin 入手
    以下のサイトより、setup.exe をダウンロード。

    http://www.cygwin.com/

  2. Cygwin 導入
    setup.exe を実行。
    パッケージ選択画面で、以下の 9 つについて、Bin? 列にチェックを入れる。

    Archive > zip: Info-ZIP compression utility
    Devel > bison: A parser generator that is compatible with YACC
    Devel > flex: A fast lexical analyzer generator
    Devel > git: Fast Version Control System - core files
    Devel > gperf: Perfect fash function generator
    Devel > ruby: Interpreted object-oriented scripting language
    Python > python: Python language interpeter
    Util > gnupg: GNU's tool for secure communication and data storage
    Web > curl: Multi-protocol file transfer command-line tool

  1. repo スクリプトのダウンロード
    Cygwin を起動し、curl コマンド使ってダウンロードします。

    $ cd ~
    $ mkdir bin
    $ curl http://android.git.kernel.org/repo >~/bin/repo
    $ chmod a+x ~/bin/repo

  2. ダウンロードするバージョンを確認
    repo init コマンドの -b で指定する値を確認します。
    tags に欄にある名称が指定できるようです。

    http://android.git.kernel.org/?p=platform/manifest.git;a=summary


  1. repo init 実行

    $ cd ~
    $ mkdir android_src
    $ cd android_src
    $ ~/bin/repo init -u git://android.git.kernel.org/platform/manifest.git -b android-sdk-2.2_r2

    が、エラーとなりました。。

          3 [main] python 4860 C:\myprog\cygwin\bin\python.exe: *** fatal error - unable to
    remap \\?\C:\myprog\cygwin\lib\p
    ython2.6\lib-dynload\time.dll to same address as parent: 0x380000 != 0x3B0000
    Stack trace:
    Frame     Function  Args
    00229CC8  6102749B  (00229CC8, 00000000, 00000000, 00000000)
    00229FB8  6102749B  (61177B80, 00008000, 00000000, 61179977)
    0022AFE8  61004AFB  (611A136C, 6123FC1C, 00380000, 003B0000)
    End of stack trace
          3 [main] python 7144 fork: child 4860 - died waiting for dll loading, errno 11
    Traceback (most recent call last):


    いろいろとググってみた結果、
    以下の手順で回避できました。

    a. 全ての Cygwin を停止。
    b. コマンド・プロンプトを起動し、以下を実行。
    > cd <Cygwin導入フォルダ>\bin
    > ash.exe
    $ /usr/bin/rebaseall


    再度、repo init 実行。
    途中に、メールアドレスの入力が求められます。
    それと、カラー表示の有無が問われるので、Y と答えておきました。

    実行が完了すると、.repo ディレクトリが作成されています。

    $ ls -la
    total 8
    drwxr-xr-x+ 1 xxxx None    0 2010-09-22 18:23 .
    drwxr-xr-x+ 1 xxxx None 4096 2010-09-22 18:40 ..
    drwxr-xr-x+ 1 xxxx None 4096 2010-09-22 18:40 .repo

    $

  2. ソースコード取得
    .repo ディレクトリが存在する場所で、repo sync を実行します。

    $ cd android_src
    $ ~/bin/repo sync

    ソースのダウンロードが開始されます。
    完了するまでに相当かかりますので、気長に待ちましょう。

  3. sources 作成
    ダウンロードしたソースは、ばらばらに配置されているので、ひとまとめにします。

    development/ide/eclipse/.classpath というファイルの中を見ると、
    <classpathentry kind="src" path="packages/apps/AccountsAndSyncSettings/src"/>
    といった行が複数あるので、このなかで kind="src" となっている path のディレクトリを
    ひとまとめにすればよいようです。

    但し、path が out/~ で始まるものはサンプルのソースだったりするようなので、
    これは除外するようにします。

    ということで、Cygwin で以下を実行します。

    $ cd android_src
    $ mkdir ../sources
    $ awk '{if($2=="kind=\"src\""){print $3}}' development/ide/eclipse/.classpath | awk -F\" '{print $2}' | grep -v ^out | while read SRC
    do
    if [ -d $SRC ]; then
        echo "copy $SRC/* --> ../sources"
        cp -R $SRC/* ../sources
    fi
    done
    $
    

    作成された sources ディレクトリを丸ごと、
    <android導入フォルダ>\platforms\android-8 に移動します。

    これで Eclipse からソースが参照できるようになります。

  4. 確認
    Eclipse が起動していたら、再起動します。

    試しに、あるソース・ファイルから、ListActivity を選択して、
    F3 (Open Declaration) を押すと、ソースが見られるようになりました~


2010年9月17日金曜日

CyanogenMod 6.0.0 に Simeji インストールしました

カスタムROM CyanogenMod 6.0.0 に更新してから、

2~3日経過してようやく気づいたんですが、日本語が入力できません!

前々から、その存在だけは知っていた Simeji をインストールすることにしました。


さっそく、android マーケットより、Simeji を検索して、インストールを開始!

インストール後、設定 --> 言語とキーボード を見ると、Simeji が追加されています。

さっそくチェックを入れて、有効にします。

有効にするとき、「注意」が表示されますが、気にせず、OKを押します。
(でも、わざわざ表示されると逆に気になりますよね・・・)




長押しで入力方法の選択を表示させると、Simeji が追加されていますので、
Simeji を選択します。

おお~ 日本語入力だけでなく、IPhone と同じようにフリック入力も可能になりました。




ん?なんか入力するたびに、小刻みに振動している・・・

もう一度、設定 --> 言語とキーボード から Simeji の設定を確認。




キー操作バイブにチェックが入っています。

これをはずすと、入力都度のバイブがなくなりました~

2010年9月15日水曜日

API Demos を動かすの巻

ヤフクオクで、HT-03A を入手して以来、

ちっとも開発っぽいことに使っていないので、

とりあえず、android 2.2 に付属してくるサンプル・アプリ API Demos をデプロイしてみて、

動かしてみようと思います!


まずは、設定 --> アプリケーション --> 開発 で USB デバッグが ON になっていることを確認。




ON になっていることを確認できたら、HT-03A と PC を USB ケーブルでつないだ状態で、

eclipse を起動し、Run を実行すると、以下の画面が表示されます。




おお~! HT-03A が選択できるようになっています。

では、HT-03A を選択し、OK ボタンを押すと、API Demos がインストールされます。
(左上に API Demos が追加されました)




起動してみます。




ちゃんと起動されました!

カスタムROM の android 2.2 ですが、なかなか順調です O(≧▽≦)O

2010年9月14日火曜日

HT-03A 2.2 にバージョンアップ(成功編)

手順を2点追加したところ、2.2 のバージョンアップが成功しました。

といっても、まだ全然使用していないので、どんな不具合があるか分かりませんが、
とりあえず、無事、起動まで確認できました!
※ 2010.10.26 追記。1ヵ月程度、開発機として使用していますが、
    特に問題は起きていないです。
※ 2010.11.04 追記。GPSが機能しないことに気付いて、
    Google Addon を 20100816 から 20101020 に更新しました。
    (まあ変にいじったことが原因なのかもしれないんですけど。。)
    gapps-mdpi-tiny-20101020-signed.zip を適用してみた

追加した2つの手順は以下の通りです。
これがどのように寄与したかは分かりません・・・
  • PCとHT-03AをUSBケーブルでつながない。
    最初はつないだまま作業していたので、念のため、つながないようにしました。

  • 更新 zip 適用前に、Wipe する。
    参考サイトには、Wipe するとあったので、正しく行うようにしました。
    (ほとんど何もしていなかったんですけど、やっぱり必要なんでしょうか。。)

では、修正版の手順です。
新規追加手順は青字にしています。

  1. RA-sapphire を起動 (HOME+電源キー同時押し)

  2. バックアップ取得。
    Backup/Restore --> Nand backup

  3. カスタムROM CyanogenMod と Google Addon をダウンロード。
    以下のサイトより、2ファイルをダウンロード。

    サイト:
      http://wiki.cyanogenmod.com/index.php?title=Latest_Version

    ファイル:
      update-cm-6.0.0-DS-signed.zip
      gapps-mdpi-tiny-20100816-signed.zip

  4. SDカードにファイルを配置。

  5. PCとHT-03Aを結ぶUSBケーブルを外す。

  6. RA-sapphire を起動 (HOME+電源キー同時押し)

  7. Wipe 実行。
    Wipre --> Wipe data/factory reset


  8. update-cm-6.0.0-DS-signed.zip 適用。
    Flash zip from sdcard -->SDCARD:update-cm-6.0.0-DS-signed.zip

  9. gapps-mdpi-tiny-20100816-signed.zip 適用。
    Flash zip from sdcard -->SDCARD:gapps-mdpi-tiny-20100816-signed.zip

  10. 起動。
    Reboot system now

無事、起動するようになりました~
とりあえず Wi-Fi つながることは確認できました~~

2010年9月13日月曜日

HT-03A 2.2 にバージョンアップ(失敗編)

android のバージョンを 1.5 から 1.6 に更新したばかりですが・・・

最新バージョンじゃないことが、気に入りません。。

開発に入ろうにも、どうも気が入らないので、

やっぱり最新の 2.2 に更新しちゃおうと思います!ъ( ゜ー^)

カスタムROMの 2.2 に更新するので、
もし参考にされている方がいましたら、自己責任でお願いします!


んでもって、いつものように、Android Custom Cookbook を参考にさせて頂きました。


手順書/Rom導入(CM5.0~_for_Magic)


基本的に参考サイト通りなんですが、一応、手順をメモしておきます。


  1. RA-sapphire を起動 (HOME+電源キー同時押し)

  2. バックアップ取得。
    Backup/Restore --> Nand backup

  3. カスタムROM CyanogenMod と Google Addon をダウンロード。

    サイト:
      http://wiki.cyanogenmod.com/index.php?title=Latest_Version

    ファイル:
      update-cm-6.0.0-DS-signed.zip
      gapps-mdpi-tiny-20100816-signed.zip

  4. SDカードにファイルを配置。

  5. RA-sapphire を起動 (HOME+電源キー同時押し)

  6. update-cm-6.0.0-DS-signed.zip 適用。
    Flash zip from sdcard -->SDCARD:update-cm-6.0.0-DS-signed.zip

  7. gapps-mdpi-tiny-20100816-signed.zip 適用。
    Flash zip from sdcard -->SDCARD:gapps-mdpi-tiny-20100816-signed.zip

  8. 起動。
    Reboot system now

が、起動しません!

まじですか・・・

以下のように画面は出てくるんですが、それより先に行きません。


DDMS で何しているのか覗いてみると、
以下のように、signature に関するエラーが多数出力されています。


09-13 15:01:38.384: INFO/PackageManager(265): /system/app/ApplicationsProvider.apk changed; collecting certs
09-13 15:01:38.474: WARN/PackageManager(265): Signature mismatch for shared user : SharedUserSetting{43d38fb8 android.uid.shared/10000}
09-13 15:01:38.474: ERROR/PackageManager(265): Package com.android.providers.applications has no signatures that match those in shared user android.uid.shared; ignoring!


なんでだろ・・・

とりあえず、2. で取得したバックアップ・データをリストア して、

また今度リトライしてみます~(ノ◇≦。) ビェーン!!



2010年9月9日木曜日

HT-03A 1.6 にバージョンアップ(成功編)

ついに成功しました・・・

なんで成功したかは分かりません。

以下のサイトを参考にしたんですが、これだとうまくいったんです。

HT-03A 公式1.6 with rooted

ん~~なんでですかね~

まあ、よしとしましょう。

参考にさせて頂いたサイト通りなんですが、以下に手順をメモっときます。

  1. ファイル取得。

    download: signed-zaku-DRD08-from-CDB72.4246ab98.zip

    download: supack.zip


  2. SDカードに update フォルダを作成し、上記 zip ファイルを解凍する。



  1. RA-sapphire 起動 (HOME+電源キー同時押し)


  2. コマンド・プロンプトで以下を実行。
    青字が入力部分。

    C:\Users\xxxx>adb shell
    / # mount /sdcard
    mount /sdcard
    / # cd /tmp
    cd /tmp
    /tmp # cp /sdcard/update/update-script.sh ./
    cp /sdcard/update/update-script.sh ./
    /tmp # sh update-script.sh
    sh update-script.sh
    mmm...

    (省略)

    target 200800 bytes; free space 16814080 bytes; enough 1
    target 312768 bytes; free space 16818176 bytes; enough 1
    target 4068716 bytes; free space 16797696 bytes; enough 1
    target 9444 bytes; free space 16793600 bytes; enough 1
    target 613928 bytes; free space 16793600 bytes; enough 1
    Unpacking new files...
    rm: cannot remove '/system/bin/newfs_msdos': No such file or directory
    with su and busybox...
    Finishing up...
    Update Done!
    Please Reboot...
    /tmp # reboot
    reboot

    C:\Users\xxxx>


  3. 再起動後、バージョンを確認。
    無事 1.6 になっていることを確認できました~

    ヘ( ̄▽ ̄*)ノ・ ・.♪ヒャッホーイ♪.・ ・ヾ(* ̄▽ ̄)ノ


2010年9月8日水曜日

HT-03A 1.6 にバージョンアップ(失敗編その2)

先日作成した 1.6 ROM を再度適用してみます。

HT-03A 1.6 にバージョンアップ(失敗編その1)


先日と異なり、
docomo 純正 1.5 ROM 適用後、root 奪取した状態なので、成功するはず!

  1. RA-sapphire を起動 (HOME+電源キー同時押し)

  2. バックアップ取得。
    Backup/Restore --> Nand backup

  3. update_signed.zip 適用。
    Flash zip from sdcard --> SDCARD:update_signed.zip

    やりました!成功です☆(*^o^)乂(^-^*)☆ ヤッタネ!!

    Reboot system now で早速再起動だ~

    以下は update 終了時の画面。

  1. 起動せず!
    DDMS の LogCat でログを確認すると、こんなエラーが・・・

    ERROR/AndroidRuntime(193): *** EXCEPTION IN SYSTEM PROCESS.  System will crash.


続きは明日にします・・・(ノд・。) グスン 


2010年9月7日火曜日

すかさず root 奪取

HT-03A docomo純正ROM 1.5 の導入に成功したので、
引き続き、root 奪取しておきます。

  1. setupsu.apk 導入

    C:\mydata\HTC-03A\更新> adb install setupsu.apk
    959 KB/s (1054738 bytes in 1.073s)
    Can't dispatch DDM chunk 46454154: no handler defined
    Can't dispatch DDM chunk 4d505251: no handler defined
            pkg: /data/local/tmp/setupsu.apk
    Success

    C:\mydata\HTC-03A\更新>


  2. す設定を実行
    「す設定」 --> 実行 --> 閉じる

  1. su 確認
    無事 root になれました。

    C:\mydata\HTC-03A\更新> adb shell
    $ su
    su
    #

HT-03A docomo純正ROM 1.5 を入れる

いろいろとググってみると、
docomo 純正ROM バージョン 1.5 があることが分かりました。

なんだか、よく分からないエラーに見舞われるので、
え~い、こうなったら、入れてしまえ~という心境です。

ということで、やってみました。

手順は以下のサイトを参考にさせて頂きました。

docomo純正ROM 1.5に差し替える

  1. docomo 純正ROM 1.5 ダウンロード。
    以下のサイトより、20090801-docomo-ht-03a.rar をダウンロードします。

    http://forum.xda-developers.com/showthread.php?t=565718

  2. 解凍し、SD カードにフォルダ毎配置。

    /sdcard/nandroid/HTxxxxxxxxxx/20090801-docomo-ht-03a

    ※ HTxxxxxxxxxx の xxxxxxxxxx は機種依存。

  3. HOME + 電源ボタン同時押しで、recovery-RA-sapphire-v1.6.2G 起動。

  4. 20090801-docomo-ht-03a をリストア。
    Backup/Restore --> Nand restore --> HTxxxxxxxxxx --> 20090801-docomo-ht-03a
    を選択。HOMEキーを押し、リストア開始。

    以下の画面のように、Restore complete! が表示されれば正常終了。


  1. HT-03A を再起動。
    おお~。ちゃんと NTT Docomo のログが表示されます。
    てっきり、でなくなると思ったんですけど。
    su は permission denied となるし、Wi-Fi の設定は消えているし、
    純正 1.5 バージョンに戻ったようですo(・∇・o)(o・∇・)o ヤッタ!


HT-03A 1.6 にバージョンアップ(失敗編その1)

ヤフオクで入手した HT-03A ですが、
root 取得済みで、バージョンは 1.5 です。

バージョン 1.6 に更新したいのですが、
正規の手順だとエラーになってしまいます。

そこで、こちらのサイトを参考にしながら、
1.6 へのバージョンアップ試してみました。

参考URL: http://acc.komugi.net/?%E6%89%8B%E9%A0%86%E6%9B%B8%2Frooted%281.6%29


が、結論としては失敗です。

とりあえず、以下に作業内容をメモします。

  1. アップデート・ファイルを SD カードに取得。
    root だと cp コマンドが使えないため、busybox を利用する。

    > adb shell
    $ su
    # busybox cp /cache/signed-zaku-DRD08-from-CDB72.4246ab98.zip /sdcard
    busybox cp /cache/signed-zaku-DRD08-from-CDB72.4246ab98.zip /sdcard
    #


  2. ota1.6su_patch.zip を取得。

     
  3. ota1.6su_patch.zip を解凍し、その中のファイルを ezplzh ツールを使い、
    signed-zaku-DRD08-from-CDB72.4246ab98.zip を解凍せずに上書き。
    上書き更新後、signed-zaku-DRD08-from-CDB72.4246ab98.zip を update.zip にリネーム。

    ダウンロード: http://www.forest.impress.co.jp/lib/arc/archive/archiver/explzh.html


  4. 再署名(HT-03A内のアップデータ・ファイル使用)
    update.zip を Auto-sign フォルダに配置。
    Sign.bat を実行。
    しかし、なぜか以下のようにエラーになってしまう。

    Auto-sign Created By Dave Da illest 1
    Update.zip is now being signed and will be renamed to update_signed.zip
    java.util.zip.ZipException: oversubscribed dynamic bit lengths tree
            at java.util.zip.InflaterInputStream.read(Unknown Source)
            at java.io.FilterInputStream.read(Unknown Source)
            at com.android.signapk.SignApk.addDigestsToManifest(SignApk.java:179)
            at com.android.signapk.SignApk.main(SignApk.java:325)
    Signing Complete


  5. signed-zaku-DRD08-from-CDB72.4246ab98.zip を端末内からでなく他から取得。

    http://android.clients.google.com/updates/zaku/signed-zaku-DRD08-from-CDB72.4246ab98.zip


  6. 再署名(インターネット取得アップデータ・ファイル使用)
    これだと正常終了。
    同フォルダに update_signed.zip が作成される。

    C:\Auto-sign> Sign.bat
    Auto-sign Created By Dave Da illest 1
    Update.zip is now being signed and will be renamed to update_signed.zip
    Signing Complete
    続行するには何かキーを押してください . . .


  7. update_signed.zip を SD カードにいれ、HT-03A を RA-sapphire で起動。
    Flash zip from sdcard --> SDCARD:update_signed.zip よりアップデート開始。

    しかし、エラーとなる。

    Deleting files...
    Deleting files...
    E:Error in applypatch
    (Status 256)
    E:Failure at line 301:
    ・・・
    Install aborted.



しかも、android が起動しなくなりました。

Docomo のロゴ表示後、android のロゴが表示されません。

しかし、事前に取得していた Nand backup をリストアすることにより、無事復旧!ホッ

買ってから1週間も経たずに壊したかもって焦った・・・

2010年9月4日土曜日

Nand backup と Nand restore してみた

recovery-RA-sapphire-v1.6.2G で Nand backup を実行すると、
SDカードに以下のファイルが作成されました。

  • /sdcard/nandroid/HT97ALF0xxxx/BDS-20100904-1214/boot.img
  • /sdcard/nandroid/HT97ALF0xxxx/BDS-20100904-1214/system.img
  • /sdcard/nandroid/HT97ALF0xxxx/BDS-20100904-1214/data.img

リストアを確認するために、試しに Wi-Fi を無効に変更してから、
Nand restore を実行してみました。

ホームボタンと電源ボタンを同時押しで電源ONし、recovery-RA-sapphire-v1.6.2G にて、
Nand restore --> HT97ALF0xxxx --> BDS-20100904-1214 でリストアを実施。

起動後、Wi-Fi 設定が有効に戻っていたので、リストアOKです!


以下は、Nand backup 後の SD カード上のファイルの確認結果。

> adb shell
$ cd /sdcard/nandroid
cd /sdcard/nandroid
$ ls -l
ls -l
d---rwxrwx system   system            2010-09-04 21:14 HT97ALF0xxxx
$ cd HT97ALF0xxxx
cd HT97ALF0xxxx
$ ls -l
ls -l
d---rwxrwx system   system            2010-09-04 21:14 BDS-20100904-1214
$ cd BDS-20100904-1214
cd BDS-20100904-1214
$ ls -l
ls -l
----rw-rw- system   system    2621440 2010-09-04 21:14 boot.img
----rw-rw- system   system   86334336 2010-09-04 21:14 system.img
----rw-rw- system   system    5983296 2010-09-04 21:14 data.img
----rw-rw- system   system        131 2010-09-04 21:14 nandroid.md5
$ exit
exit

>

recovery-RA-sapphire-v1.6.2G って何ですか?

ググってもよく分からんかったので、
ダウンロードしたサイトで説明を見てみた。

サイト: http://forum.xda-developers.com/showthread.php?t=530492


メニューはこんな感じ。
  • Reboot system now
  • USB-MS Toggle
    PC接続時に、USBストレージとして使用/使用しないを設定。
  • Backup/Restore
    バックアップ/リストア。
    イマイチ、Nand backup や ext バックアップの意味が分からん。。(2010.9.6修正)
    以下のサイトより、nandroid バックアップとは、
    本体フラッシュメモリ(NAND ROM)上パーティション全部はSD card上に
    .imgファイルとして丸ごとバックアップを取ってくれるの、とのこと。
    http://www.taroh.org/tariki/index.php/Tech:android:hack:backup
  • Flash zip from sdcard
    SDカード上の zip ファイル(カスタムrom等)より、android を更新。
  • Wipe
    android の/data や /cache や SD の ext パーティションのクリア。
  • Partition sdcard
    SDカード上に ext ファイル・システムを作成。
  • Other
    apk の uid ミスマッチの修復 や recovery.log を SD に移動。
  • Power off

recovery-RA-sapphire-v1.6.2G.img を導入

ヤフオクで、HTC-03A を入手しました!

早速、試したこと。

すでに、リカバリーユーティリティ recovery-RA-sapphire-v1.5.2G.img が
導入されていたが、recovery-RA-sapphire-v1.6.2G.img に更新してみた。

  1. 以下のサイトより recovery-RA-sapphire-v1.6.2G.img をダウンロード。
    http://forum.xda-developers.com/showthread.php?t=530492

  2. micro SD カードに上記ファイルをコピー。

  3. 上記 micro SD カードを HTC-03A に挿入し、電源ON。

  4. 設定 → アプリケーション → 開発 にて、
    USB デバッグ にチェックが入っていることを確認。

  5. PC と HTC-03A を USB 接続。

  6. adb devices で正常に認識できていることを確認。

    List of devices   attached
    HT97xxxxxxxx     device

  7. recovery イメージの更新。

    $ su
    su
    # ls /sdcard
    ls /sdcard
    recovery-RA-sapphire-v1.6.2G.img
    # flash_image recovery /sdcard/recovery-RA-sapphire-v1.6.2G.img
    flash_image recovery /sdcard/recovery-RA-sapphire-v1.6.2G.img
    #

  8. ホームと電源ボタンを同時押しで電源ON。
    Android system recovery が起動され、
    Build : RA-sapphire-v1.6.2G となっていることを確認。