AndroidをEeePC901で動かす!

ITProを参考に試してみました。

動作環境は、


必要なものは

  • 開発環境の準備
$> sudo apt-get update 
$> sudo apt-get -y install git-core gnupg sun-java6-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind g++
以下の特別パッケージがインストールされます:
  libaa1-dev libartsc0-dev libasound2-dev libaudio-dev libaudiofile-dev libcaca-dev libcucul-dev libdigest-sha1-perl libdirectfb-dev
  libdirectfb-extra liberror-perl libfreetype6-dev libgl1-mesa-dev libglib2.0-dev libglu1-mesa-dev libglu1-xorg-dev libice-dev libjpeg62-dev
  libpng12-dev libpthread-stubs0 libpthread-stubs0-dev libsdl1.2-dev libslang2-dev libsm-dev libsysfs-dev libwxbase2.6-0 libwxbase2.6-dev
  libwxgtk2.6-0 libx11-dev libxau-dev libxcb-xlib0-dev libxcb1-dev libxdmcp-dev libxext-dev libxi-dev libxt-dev m4 mesa-common-dev
  wx2.6-headers x11proto-core-dev x11proto-input-dev x11proto-kb-dev x11proto-xext-dev xtrans-dev
提案パッケージ:
  bison-doc git-doc git-arch git-cvs git-svn git-email git-daemon-run git-gui gitk gitweb libasound2-doc libglib2.0-doc wx-common wx2.6-doc
  xlibmesa-gl-dev libgl-dev xlibmesa-glu-dev libglu-dev libc6-dbg kcachegrind alleyoop
推奨パッケージ:
  ca-certificate
以下のパッケージが新たにインストールされます:
  bison curl flex git-core gperf libaa1-dev libartsc0-dev libasound2-dev libaudio-dev libaudiofile-dev libcaca-dev libcucul-dev
  libdigest-sha1-perl libdirectfb-dev libdirectfb-extra liberror-perl libesd0-dev libfreetype6-dev libgl1-mesa-dev libglib2.0-dev
  libglu1-mesa-dev libglu1-xorg-dev libice-dev libjpeg62-dev libpng12-dev libpthread-stubs0 libpthread-stubs0-dev libsdl1.2-dev libslang2-dev
  libsm-dev libsysfs-dev libwxbase2.6-0 libwxbase2.6-dev libwxgtk2.6-0 libwxgtk2.6-dev libx11-dev libxau-dev libxcb-xlib0-dev libxcb1-dev
  libxdmcp-dev libxext-dev libxi-dev libxt-dev m4 mesa-common-dev valgrind wx2.6-headers x11proto-core-dev x11proto-input-dev x11proto-kb-dev
  x11proto-xext-dev xtrans-dev
アップグレード: 0 個、新規インストール: 52 個、削除: 0 個、保留: 0 個。
39.4MB のアーカイブを取得する必要があります。
この操作後に追加で 114MB のディスク容量が消費されます。
 :
 :
  • Android専用のプロジェクト管理ツール(repo)のインストール
$> cd ~
$> mkdir bin
$> cd bin
$> wget http://android.git.kernel.org/repo
$> chmod a+x ~/bin/repo
  • Javaの設定とか
$> export JAVA_HOME=/usr/lib/jvm/java-6-sun
$> export PATH=$PATH:~/bin
$> cd ~
$> mkdir cupcake
$> cd cupcake
$> repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake
gpg: 鍵輪「/home/kario/.repoconfig/gnupg/secring.gpg」ができました
gpg: 鍵輪「/home/kario/.repoconfig/gnupg/pubring.gpg」ができました
gpg: /home/kario/.repoconfig/gnupg/trustdb.gpg: 信用データベースができました
gpg: 鍵920F5C65: 公開鍵“Repo Maintainer <repo@android.kernel.org>”を読み込みました
gpg: 処理数の合計: 1
gpg:               読込み: 1

Getting repo ...
   from git://android.git.kernel.org/tools/repo.git
warning: no common commits
remote: Counting objects: 365, done.
remote: Compressing objects: 100% (213/213), done.
remote: Total 365 (delta 203), reused 263 (delta 138)
Receiving objects: 100% (365/365), 169.83 KiB | 105 KiB/s, done.
Resolving deltas: 100% (203/203), done.
From git://android.git.kernel.org/tools/repo
 * [new branch]      master     -> origin/master
 * [new branch]      stable     -> origin/stable
 * [new tag]         v1.6.3     -> v1.6.3
From git://android.git.kernel.org/tools/repo
 * [new tag]         v1.0       -> v1.0
 * [new tag]         v1.0.1     -> v1.0.1
 * [new tag]         v1.0.2     -> v1.0.2
 * [new tag]         v1.0.3     -> v1.0.3
 * [new tag]         v1.0.4     -> v1.0.4
 * [new tag]         v1.0.5     -> v1.0.5
 * [new tag]         v1.0.6     -> v1.0.6
 * [new tag]         v1.0.7     -> v1.0.7
 * [new tag]         v1.0.8     -> v1.0.8
 * [new tag]         v1.0.9     -> v1.0.9
 * [new tag]         v1.1       -> v1.1
 * [new tag]         v1.2       -> v1.2
 * [new tag]         v1.3       -> v1.3
 * [new tag]         v1.3.1     -> v1.3.1
 * [new tag]         v1.3.2     -> v1.3.2
 * [new tag]         v1.4       -> v1.4
 * [new tag]         v1.4.1     -> v1.4.1
 * [new tag]         v1.4.2     -> v1.4.2
 * [new tag]         v1.4.3     -> v1.4.3
 * [new tag]         v1.4.4     -> v1.4.4
 * [new tag]         v1.5       -> v1.5
 * [new tag]         v1.5.1     -> v1.5.1
 * [new tag]         v1.6       -> v1.6
 * [new tag]         v1.6.1     -> v1.6.1
 * [new tag]         v1.6.2     -> v1.6.2
Getting manifest ...
   from git://android.git.kernel.org/platform/manifest.git
warning: no common commits
remote: Counting objects: 70, done.
remote: Compressing objects: 100% (27/27), done.
remote: Total 70 (delta 26), reused 58 (delta 20)
Unpacking objects: 100% (70/70), done.
From git://android.git.kernel.org/platform/manifest
 * [new branch]      cdma-import -> origin/cdma-import
 * [new branch]      cupcake    -> origin/cupcake
 * [new branch]      donut      -> origin/donut
 * [new branch]      master     -> origin/master
 * [new branch]      release-1.0 -> origin/release-1.0
From git://android.git.kernel.org/platform/manifest
 * [new tag]         android-1.0 -> android-1.0
Branch default set up to track remote branch refs/remotes/origin/cupcake.
Switched to a new branch "default"

Your Name  [xxxx xxxxx]: xxxx xxxx<span style="color:#FF0000;"> <- 自分の名前</span>
Your Email [xxxx@xxxxx.(none)]: xxxxx@example.com<span style="color:#FF0000;">  <- メールアドレス</span>

Testing colorized output (for 'repo diff', 'repo status'):
  black    red      green    yellow   blue     magenta   cyan     white 
  bold     dim      ul       reverse 
Enable color display in this user account (y/n)? y

repo initialized in /home/kario

$> repo sync<span style="color:#0000FF;"> <- すごーく時間がかかります。。。(30分程度)</span>
  • EeePC901用のレポジトリ設定ファイルを記述
$> vi .repo/local_manifest.xml<span style="color:#0000FF;"> <- "701"ってなってるけど、x86系はこれでいいらしい</span>
<manifest>
<project name="platform/vendor/asus/eee_701" path="vendor/asus/eee_701"/>
</manifest>
$> repo sync
  • バグ修正
$> vi frameworks/base/services/java/com/android/server/PowerManagerService.java
350: // assume nothing is on yet
351: mUserState = mPowerState = <span style="color:#FF0000;">SCREEN_BRIGHT</span>;
  • ビルド
$> TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREOPT=true make installer_img
build/target/board/Android.mk:35: *** Please rename "vendor/asus/eee_701/Android.mk" to "vendor/asus/eee_701/AndroidBoard.mk".

ワーニング通りにリネームして、再試行
$> mv vendor/asus/eee_701/Android.mk vendor/asus/eee_701/AndroidBoard.mk
$> TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREOPT=true make installer_img
   :
target Java: core (out/target/common/obj/JAVA_LIBRARIES/core_intermediates/classes)
Unrecognized option : 9999999
make: *** [out/target/common/obj/JAVA_LIBRARIES/core_intermediates/classes-full-debug.jar] エラー 41

JAVAの環境が変??
[http://groups.google.com/group/android-platform/browse_thread/thread/3660c2ac60a305b0/89e1a0517e66eee4?lnk=raot:title=ココ]を参考にして解決!
Javaが複数バージョン混在してて、グダってたみたい。。。
$> javac -verison
Eclipse Java Compiler v_774_R33x, 3.3.1, Copyright IBM Corp 2000, 2007. All rights reserved.
$> which javac
/usr/bin/javac
$> ls -l /usr/bin/javac
lrwxrwxrwx 1 root root 23 2008-10-06 12:27 /usr/bin/javac -> /etc/alternatives/javac
$> ls -l /etc/alternatives/javac
lrwxrwxrwx 1 root root 31 2009-03-19 17:05 /etc/alternatives/javac -> /usr/lib/jvm/java-gcj/bin/javac

$> sudo update-alternatives --config javac
`javac' を提供する 5 個の alternatives があります。
  選択肢       alternative
-----------------------------------------------
          1    /usr/bin/gcj-wrapper-4.2
          2    /usr/bin/ecj
          3    /usr/bin/gcj-wrapper-4.3
*+        4    /usr/lib/jvm/java-gcj/bin/javac
          5    /usr/lib/jvm/java-6-sun/bin/javac
デフォルト[*] のままにするには Enter、さもなければ選択肢の番号のキーを押してください: <span style="color:#FF0000;">5</span> <- Sunのヤツを使うように変更

$> javac -version
javac 1.6.0_10
$> cd ~/cupcake/
$> TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREOPT=true make installer_img
 :
Java.Lang.NullPointerException
 :
make: *** [out/target/common/docs/offline-sdk-timestamp]

なぜ。。。
今日はとりあえずココまで。。。