已经更新了不少东西 请到官网察看详细 本文章以过时
经过了许久的尝试
阅读了网上许多被转来转去的文章
终于成功编译了姜饼的源代码
总结一下
还是官方的文章比较管用
下面进入正题
分享一下完整的步骤以及简单修改源代码的方法
系统:
使用的是ubuntu官网下载的ubuntu10.04 LTS 64位版本(ubuntu-10.04.2-desktop-amd64.iso) wubi安装
配置软件源:
系统安装完毕以后应该首先换一个速度快的软件源
我用的是ubuntu.cn99.com
不然下载各种更新和软件包的时候非常的慢
安装更新:
使用更新管理器把系统更新到最新
我还顺便装了一下flashplugin
这一步可以跳过
安装JDK:
我要编译的是2.3姜饼的源代码 所以需要使用jdk6 (还需要是64位的系统)
安装方法:
打开终端
输入
sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner"
sudo apt-get update
sudo apt-get install sun-java6-jdk
就安装好了 (ubuntu10.04 LTS版会自带那两个源)
并且不需要配置环境变量
这一步可以参考 http://source.android.com/source/initializing.html
安装各种软件包:
终端中输入
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos texinfo libsdl-dev libwxgtk2.6-dev
最后三个是我补充的 其他都是官方文档提供的
这一步可以参考 http://source.android.com/source/initializing.html
下载源代码:
打开终端并输入
mkdir ~/bin
PATH=~/bin:$PATH
这两句是在你的个人文件夹下创建了一个名字叫bin的文件夹 并且把其加入到了环境变量中
再输入
curl https://android.git.kernel.org/repo > ~/bin/repo
chmod a+x ~/bin/repo
这两句首先在bin目录下面下载了一个repo文件 repo简单来说就说用来版本控制的 我们就是用的它来同步代码
然后建立一个用来存放源代码的文件夹 我的这个文件夹的名字是android2.3
输入
mkdir android2.3
cd android2.3
进入android2.3目录
输入
repo init -u git://android.git.kernel.org/platform/manifest.git -b gingerbread
表示你需要的代码是姜饼的 所以最后是gingerbread 如果是2.2代码 就把gingerbread改成froyo
然后你需要输入你的名字跟邮箱地址
如果提示找不到repo命令的话 需要重新设置环境变量 就是之前的PATH=~/bin:$PATH
输入
repo sync
开始同步代码 这个过程会根据你的网速来决定快慢
这一步需要下载的数据有3g那么大
可以续传 一次没下完也没关系
如果之前就已经下过一次的话 只需要把源代码目录(我的是android2.3)下有一个叫.repo的隐藏文件夹里的projects文件夹备份出来就可以了
以后还需要同步的时候再把projects文件夹拷贝回去
ctrl+h查看隐藏文件
这一步可以参考 http://source.android.com/source/downloading.html
编译整个源代码:
cd android2.3
进入你的代码目录
输入
. build/envsetup.sh
注意.和build中间有个空格
输入
lunch full-eng
make -j2
输入make就是开始编译代码了 加一个-j2参数就是开两个线程去编译 速度会快些 我花了两个小时的时间
编译完毕以后马上输入
emulator
就可以运行模拟器了 系统能跑起来就说明编译成功了
如果提示找不到emulator命令的话
需要添加环境变量
在android2.3目录下的out/target/product/generic文件夹下会看到system.img
能看到的话应该算是成功了
这一步可以参考 http://source.android.com/source/building.html
编译SDK:
这一步在官方网站上没有说明
但是在源代码文件夹里面有文档提到了
就是在android2.3/sdk/docs目录下有一个叫howto_build_SDK.txt的文件介绍了如何编译SDK
原文
Then once you have all the source, simply build the SDK using: $ cd ~/my-android-git $ . build/envsetup.sh $ lunch sdk-eng $ make sdk看来不需要先编译整个系统再编译SDK 可以直接上来就编译SDK
按提示输入
make到时候也可以加上-j参数 比如 make -j2 sdk
但是不推荐 因为容易编译失败 而且编译SDK只需要二十多分钟到时间 不算很长
当出现
Package SDK: out/host/darwin-x86/sdk/android-sdk_eng.<build-id>_mac-x86.zip的时候 就表示编译成功了 其中<build-id>默认是系统的用户名
howto_build_SDK.txt中还提到了编译ADT插件
我发现自己编译到ADT插件竟然认不到platform 自己编译出来到SDK也一样
原因不明
只要使用官方的SDK和ADT就没有问题了
具体就是把自己编译出来platform拷贝到官方SDK里到platforms文件夹下 搞过Android开发都懂的
最后:
非常简单的一步
就是直接修改源代码然后编译SDK就可以得到自己的SDK了
我就示范一个简单的例子 抛砖引玉
首先我找到TextView的代码
在frameworks/base/core/java/android/widget 如图
我在updateTextColors方法的开头添加了一句System.out.println
打印了一句话"Source Code Changed"
updateTextColors方法会在TextView的setTextColor方法中被调用
好 保存
编译
然后使用这个platform
新建一个项目
调用一下TextView的setTextColor方法看看有什么效果
如图
一个很简单的例子
看看
Source Code Changed被打出来了
SDK修改成功