2008-12-28

Android Dev Phone 1 その7

Ubuntu 8.10で試したら、あっさりmakeできてます。libaudioまわりのヘッダ修正なども不要。gitが更新されたのか、OS Xだけmakeできないのかは不明。

fastbootでnandを焼けばADP1もcupcakeになるわけですが、いくつか問題もあるようですし、nandを焼かずに違うシステムを起動できるか試してみます。

microSDにfdiskでpatritionつくって、system.imgとuserdata.imgをddしてみましたが、どうもmountに失敗します。


これはあっさりあきらめて、ext3でmountできるようにしてみます。

MYDROID/kernel/arch/arm/configs/msm_defconfigCONFIG_EXT3_FS=yを追加。

make ARCH=arm CROSS_COMPILE=MYDROID/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi- msm_defconfig
make ARCH=arm CROSS_COMPILE=MYDROID/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-


MYDROID/kernel/arch/arm/boot/zImageができます。


MYDROID/buildspec.mk
TARGET_PRODUCT:=htc_dream
TARGET_PREBUILT_KERNEL:=MYDROID/kernel/arch/arm/boot/zImage

ってしとけば、gitでとってきたkernel(vendor/htc/dream/kernel)のかわりにそれが使われます
(vendor/htc/dream/README.txtにはTARGET_PREBUILD_KERNELって書いてあるので注意)。


ADP1をカメラボタン押しながら起動して、バックボタン押してFASTBOOTモードにしてから、
MYDROID/out/target/product/dream
fastboot boot boot.img

とすれば自前ビルドkernelとramdiskで起動します。


MYDROID/system/core/rootdir/init.rcMYDROID/vendor/htc/dream/init.trout.rcを組み合わせたinit.rcが起動時にスクリプトとして実行されるので、ここでsdcardをext3でmountできればいいわけですが。

/system, /data mountしようとしたときにはsdcardがまだ居ない状態。system/core/initいじって、sleepコマンドとか追加して待たせてみたものの、どうにもsdcardをmountできず... ADP1以外のportだとsdcardからext3でmountできてるんですけども(omapzoomとか)。

/system mountできないとadb shellすると /system/bin/sh がないとか怒られます。

mount yaffs2 loop@/data/system.img /system

とかでもできるはずですが、これだとnandの容量がきびしいんですよね。/cacheを使うか。

2008-12-22

Android Dev Phone 1 その6

Building For Dream

普通にrepo init, syncするだけだと入ってない、ADP1(ていうかG1)固有のkernelとかdriverとかmoduleを持ってくるために、.repo/local_manifest.xmlにそのページのmanifestを追加。

repo syncして、vendor/htc/dreamが出来てることを確認。

cd vendor/htc/dreamして、./extract-files.shを実行。adbで実機からOpenGLESのhardware acceleration driverなどを拾います。

repoのtopにTARGET_PRODUCT:=htc_dreamという内容のbuildspec.mkてファイルを追加。

make。


で、エラーになると。

Build Error in Mac OSX

hardware/msm7k/libaudio/AudioHardware.h,cpp あたりのcommitを待つか、無理矢理通すか。

hardware/libhardwareをcupcake前に戻したらいけたり?

cupcake

すでにmasterにmergeされてるので、そのままrepoで持ってくればいいんですが、なぜかOS X用 prebuilt x86 toolchain が入ってません。

toolchainのソースは、

http://android.git.kernel.org/pub/android-toolchain-20081019.tar.bz2

らしいですが、libgcc作るあたりで失敗。この辺はLinux用prebuiltを使えばいいんでしょうけども。Linuxでcanadian crossで作るとか?

2008-12-19

Android Dev Phone 1 その5

開発機のprocessをgdbで見る。

Is there a "gdb" or "gdbserver" running on an Android ARM device?

cupcake branchにちゃんと動くgdbserverがある。

gdbserver tree

adb push gdbserver /sdcard
adb forward tcp:8888 tcp:8888


とかやっといて、

adb shell
$ su
# /sdcard/gdbserver 0:8888 --attach 777


とか。777は見たいpid

で、

$MYDROID/prebuilt/darwin-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-gdb
(gdb) target remote localhost:8888
(gdb) c


とか。/sdcardはデフォルトでnoexecなんで動かなくても泣かない。

Android Dev Phone 1 その4

google account 登録をSIMなしでやる方法。登録画面が出る前でも出てからでも、

adb shell
$ am start -a android.intent.action.MAIN -n com.android.settings/.Settings


で出てきた設定画面で無線LANを設定。以上。

Android Dev Phone 1 その3

電源ボタン押しっ放しで電源offしてから、カメラボタン押しながら電源ボタンを押して起動するとbootloaderが起動。
最初serialになってるので、バックボタン押すとFASTBOOTモード。

the Androids on Skateboards


repo/gitでひろってきたソースツリーに、out/host/darwin-x86/bin/fastboot あり(これはOS Xの場合。makeしないとできないかな)。これで別kernelを起動できるはずです。

とか、http://www.gotontheinter.net/fastbootに書いてあります。

fastbootではnandから読み出せないんですね。ということでNandroidが必要になると。


電源off状態から、ホームボタンを押しながら電源ボタンを押し続けるとFactory Resetモード。

注意!


で、ALT+Wを叩くと、箱から取り出す絵が表示されて、再起動。そこそこ時間がかかって起動して、出荷時の状態になります。

/sdcardの中身は無事w /systemはどうやらtarとかで展開するだけのようで追加したファイルが残ってました。mkfsしないのかな。


SIMささってないとemergency callしかできない状態になりました。出荷時の状態になったみたいです。

ということで、出荷時の状態から再度SIMなしで動くように実験。

# sqlite3 /data/data/com.android.providers.settings/databases/settings.db "INSERT INTO system (name, value) VALUES ('device_provisioned', 1);"
# sync
# sync
# reboot


OK! SIMなしで登録画面でました。

(2008.12.24追記: 要再起動。reboot前sync2回派)

com.android.setupwizard.SetupWizardActivity を disable にすれば、google accountの登録も不要です。

2008-12-18

Android Dev Phone 1 その2

/sdcard 上の実行ファイルが動きません。
noexec 付きでmountされてるからです。
# umount /sdcard
# mount -t vfat /dev/block/mmcblk0p1 /sdcard


/systemに書けません。
ro でmountされてるからです。
# mount -o rw,remount /dev/block/mtdblock3 /system


出荷状態に戻したい。
たぶん http://www.gotontheinter.net/content/android-dev-phone-1-software-image のイメージとhttp://www.gotontheinter.net/content/nandroid-v20-full-nand-backup-and-restore-tool のnandroidで戻せるはず。おそらく。

Android Dev Phone 1

無線LANが使えるコンパクトなLinux端末として買うのもありかも。いざとなったら電話をかけられますし。SIM要りますが。$530程度ですし。円高ですし。

GLES2.0使いたいならopenpandoraの方がいいですけど。安いし。

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

にある通り、
adb kill-server
adb start-server
adb shell
$ su
# sqlite3 /data/data/com.android.providers.settings/databases/settings.db "INSERT INTO system (name, value) VALUES ('device_provisioned', 1);"
ってやればSIM不要。1回SIM刺しちゃったので保証できないですけど。とにかくSIMささってなくてもちゃんと使えてます。

/data/system/packages.xml に disable-components com.android.setupwizard.SetupWizardActivity を追加したのが効いたのか、google accountの登録も不要でした。Marketとか使うなら必要ですけど。

2008-12-06

git

http://gitx.frim.nl/ GitXラブ。


問題はgit submodule。いろんなgit repositoryまとめて使いたかったりするわけですが、submoduleはかゆいところに手が届かない感じで。svn:externalsもそうですけども。

というところでAndroidのrepoが一つの解決策なのかなと。

2008-12-05

My MacPorts

実際に使用しているMacPortsだけに絞ってGitに入れてみました。

http://git.sourceforge.jp/view?p=splhack/MacPorts.git;a=summary

git clone git://git.sourceforge.jp/gitroot/splhack/MacPorts.git
cd MacPorts/aqua/iTerm
sudo port install


とかで使えると思います。直接ディレクトリに行けば /opt/local/etc/macports/sources.conf の編集やportindexしなくてもいいんですね。


  • iTerm 0.9.6.1201 LANG環境設定回避
  • ctags 5.6j1.1 日本語版
  • fmdiff 7819 http://ssel.vub.ac.be/svn-gen/bdefrain/fmscripts/ FileMerge呼び出しスクリプト。git diff用にスクリプトも用意してみました。GIT_EXTERNAL_DIFF=fmgitdiff git diff --ext-diffとか。
  • vim 7.2.042 http://clewn.sourceforge.net/ vimgdb追加。+my でいろいろ。
  • zsh-devel 4.3.9.1 East Asian Ambiguous characters(◎とか)用 +cjk


そういやvim-cocoaはCore Text対応してますね。MacVim含めて使ってないですが...