作者nowar100 (抛砖引玉)
看板AndroidDev
标题[分享] Build source code to device
时间Fri Jan 14 01:34:49 2011
官网其实更新蛮慢的,有些资讯已经过时了 (且过时的离谱...)
小弟为了想要放编译原始码的文章进,所以自己写一篇吧
编这东西很容易失败,就拿错误讯息喂狗或上来问吧,祝顺利 :)
以下,正文开始
======================================
环境为 Ubuntu 10.04
在下载原始码之前,必须先把一些工具给装好
首先先把 sun-jdk 的来源加进去,否则会找不到这个套件
$ sudo add-apt-repository \
"deb http://archive.canonical.com/ lucid partner"
$ sudo aptitude install \
git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev \
libwxgtk2.6-dev squashfs-tools build-essential zip curl \
libncurses5-dev zlib1g-dev sun-java6-jdk pngcrush
x64 的要多安装一些库,才能相容
$ sudo aptitude install \
g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline5-dev \
gcc-4.3-multilib g++-4.3-multilib
该原始码的管理程式是 git,Google 将他包装一层成新的工具 repo
$ curl http://android.git.kernel.org/repo > repo
$ chmod +x repo
把抓下来的 repo 放到你的 $PATH 里面
(不知道 $PATH 的请左转 Linux 板)
好,前置工作结束,接着开始下载原始码
$ mkdir mydroid
$ cd mydroid
$ repo init -u git://android.git.kernel.org/platform/manifest.git
(如果想指定 branch 版本,就在後面加上 -b version_name)
(例如: repo init -u git://... -b gingerbread)
$ repo sync
好,现在开始抓原始码了,可以起来去上个厕所,喝杯咖啡
这需要花点时间,等结束之後,开始编译
(这更久,我第一次体会到什麽叫做大专案...)
$ export USE_CCACHE=1 && make
编译完,可以看到多一个资料夹 out/ ,里面会放编出来的东西
恭喜你,本文的前半部到此结束
想开 emulator 来玩的话,猜猜他在 out/ 资料夹下的哪边吧 :D
======================================
有人有疑问了,我想烧进手机玩,可是网站没写怎麽烧阿!?
所以这就是这篇文下半部的内容了
由於 Google 官方开发的手机是 Nexus 系列,目前只有两只 (One, S)
因此刚刚抓下来的原始码能烧的也只有这两只
(如果想烧进别的手机,请找非官方的,例 CyanogenMod)
将刚刚编好的东西直接烧进去就可以了吗?当然不是
每只手机都有自己 device-specific 档案,例如驱动
所以我们要调一下设定,首先回到刚刚的资料夹
$ cd mydroid
$ source build/envsetup.sh
如果刚刚没有先编好一次,现在请先编出 adb
$ make adb
接着运行 adb
$ ./out/host/linux-x86/bin/adb root
插上您的手机,将一些 device-specific 档案抓到电脑来
$ cd device/{htc,samsung}/{passion,crespo}
$ ./extract-files.sh
$ cd ../../../
前置作业到此完成,接着选择你要编的 target
$ lunch
这时候有看到几个选项,其中有两个
3. full_passion-userdebug <= for Nexus One
4. full_crespo-userdebug <= for Nexus S
选好之後,再 make 一次
$ export USE_CCACHE=1 && make
编好之後,最後一步,将相关映像档烧进手机
先要确定好手机是连上电脑的, 也有解锁,进入 fastboot 模式
(不知道怎麽进的请左转 Android 板)
开始烧录
$ ./out/host/linux-x86/bin/fastboot flash system \
out/target/product/{passion,crespo}/system.img
$ ./out/host/linux-x86/bin/fastboot flash boot \
out/target/product/{passion,crespo}/boot.img
$ ./out/host/linux-x86/bin/fastboot flash recovery \
out/target/product/{passion,crespo}/recovery.img
$ ./out/host/linux-x86/bin/fastboot flash userdata \
out/target/product/{passion,crespo}/userdata.img
$ ./out/host/linux-x86/bin/fastboot reboot
走到这一步,恭喜您,大功告成
本文也功德圆满,在此结束
谢谢您的阅读
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.36.167.13
1F:→ nowar100:收录至 z-3-3-1 01/14 01:37
2F:→ coolkevin:android官方网站不是说只有支援Java5吗 01/14 02:04
3F:→ coolkevin:如果使用Java6编出来的image, 会不会导致有些功能异常? 01/14 02:05
4F:→ nowar100:这就是我说"过时的离谱"的点... 01/14 02:05
5F:→ coolkevin:所以实际上用Java6也是没问题罗:O 01/14 02:08
6F:→ nowar100:我自己在 Ubuntu x64 下已经成功编完了 :) 01/14 02:10
7F:→ coolkevin:我有在32bit上的fedora编过image 01/14 09:49
8F:→ coolkevin:可以用emulator跑, 不过不知道装apk进去 01/14 09:50
9F:→ coolkevin:不知会不会有其他问题,目前只有装几个来测试而已 01/14 09:50
10F:→ nowar100:更新至 z-3-3-1 01/14 13:33
11F:推 yienge:推一个好文 学到了m(_ _)m 01/14 21:25
※ 编辑: nowar100 来自: 114.36.175.16 (02/12 23:04)
12F:推 nfsnfs:赞! 推一下 :D 做过很多次 不过以前刷 G1 都多少有点问题 02/18 16:16