Android源码在UBUNTU编译全过程

Android源码在UBUNTU编译全过程


原文转载自http://zxl-ong.iteye.com/blog/966020

1, ubuntu 下源码编译 
最好切换到root用户下进行操作 
$ sudo -s 
1.1,下载jdk1.5 并安装(下载自解压版本并设置环境变量) 
编辑/root/.bashrc 添加 
#set java environment 
export JAVA_HOME=/work/jdk1.5.0_22 
export JRE_HOME=JAVA_HOME/jre 
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH 
export SDK_HOME=/work/froyo/out/host/linux-x86/sdk/android-sdk_eng.root_linux-x86/tools 
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH:$SDK_HOME:/work/froyo/out/host/linux-x86/bin 
export ANDROID_PRODUCT_OUT=/work/froyo/out/target/product/generic 
1.2,安装(apt-get install xxx) git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev 
1.3,下载源码 
$ mkdir mydroid 
$ cd mydroid 

$ git clone git://mirror.archermind.com/froyo/tools/repo.git tools/repo.git 
$ ./tools/repo.git/repo init -u git://mirror.archermind.com/froyo/platform/manifest.git -b froyo 
$ ./tools/repo.git/repo sync 
1.4,编译源码 
$ export ANDROID_JAVA_HOME=$JAVA_HOME 
$ make 
查看编译过程中是否有错误,一般情况不会有错误,如果有错误可能是某个依赖包没有安装,安装提示的依赖包后重新make 

1.5,生成sdk 
$ make PRODUCT-sdk-sdk ###使用make sdk 会出现R文件不能自动生成的问题 
编译完成后会在/work/froyo/out/host/linux-x86/sdk/目录生成sdk 
1.6,编译完成之后查看是否编译成功 
$ . build/envsetup.sh 
$ emulator& //启动模拟器,如果能成功启动代表编译成功。 

2.Android 在eclipse中进行调试 
2.1,拷贝development/ide/eclipse/.classpath到源代码根目录并修改.classpath 
删除下面两行 
<classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/google-common_intermediates/javalib.jar"/> 
<classpathentry kind="lib" path="out/target/common/obj/JAVA_LIBRARIES/gsf-client_intermediates/javalib.jar"/> 
添加 <classpathentry kind="lib" path="/work/froyo/out/target/common/obj/JAVA_LIBRARIES/android-common_intermediates/javalib.jar"/> 


2.2,在eclipse中修改 

2.2.1. 通过Create Project from existing source 导入froyo源代码 
2.2.2. 展开packages/providers/CalendarProvider/src 
2.2.3. 展开包: com.android.providers.calendar 
2.2.4. 右键点击包com.android.providers.calendar 
2.2.5. 选择 "new file" 
2.2.6. 在对话框中选择点击  "Advanced >>" 按钮, 可以看到"Link to file in the file system" checkbox, 
2.2.7. 勾选上 checkbox.  这时 "Browse..." 可用. 
2.2.8. 点击 "Browse..." 按钮,选择EventLogTags.java (e.g.,out/target/common/obj/APPS/CalendarProvider_intermediates/src/src/com/android/providers/calendar/EventLogTags.java) 
2.2.9. 点击OK 
2.2.10. 点击 Finish (in "New File") 


2.3 同样的方式修改com.android.providers.contacts的问题 


3,调试 

在IDE(eclipse)中修改源代码后在shell中编译运行 
源码自带编译工具 
先在android源码根目录执行 . build/envsetup.sh 再通过m/mm/mmm进行编译 
- m:       Makes from the top of the tree. 
- mm:      Builds all of the modules in the current directory. 
- mmm:     Builds all of the modules in the supplied directories. 

$cd /path/to/android/root 
$. build/envsetup.sh 
$lunch 1   # 初始化模拟器等 
$make/m/mm/mmm      # 
$emulator&  # you should see a GUI picture of a phone 
$ddms& #调试工具 



3.1 修改APK应用:在packages中的应用如果修改后都可以单独编译。先执行 
$. build/envsetup.sh #初始化 
$mmm packages/providers/ContactsProvider/ 
##用mm/mmm来编译生成的.apk并不会打包到system.img中,需要我们手动通过make snod把system文件夹打包为system.img 
##可以使用make snod将模块打包到system.img中,也可以使用 adb install *.apk安装 
注:通过mmm packages/providers/ContactsProvider/ 编译后的apk在 out/target/product/generic/system/app 
这时候通过 adb install out/target/product/generic/system/app/xxx.apk 安装你刚修改过的apk就可以在模拟器上看到你修改的效果了。 

3.2 修改framework:如果在Contacts.java中修改了,必须重新编译下framework。先执行 
$ . build/envsetup.sh #初始化 
#网上有的说要执行 make update-api,实际上直接make PRODUCT-sdk-sdk就可以将修改后的framework编译到sdk中。 #编译framework后,那些修改了的应用可以不用再单独编译了。4~6分钟 
$ make PRODUCT-sdk-sdk #重新生成SDK 10~20分钟 



******************************************************** 
eclipse上调试android里的程序。  cd android源码目录 
. build/envsetup.sh 
lunch 1   # to build the emulator 
emulator &  # you should see a GUI picture of a phone 
ddms &     # you should get a splufty debugging console 
然后在eclipse中配置调试类型和端口: 
在 Run->Debug Configurations->Remote java application上双击,然后,”Host:”设为 localhost,”Port:”设为8700,”Connection Type”为Standard(Socket Attach) 
然后“Apply” 
注意,在点击”Debug”时苦出错,说8700端口被占用,那么把DDMS程序关掉,重新打开DDMS就OK了。如果提供连不到VM错误时,请注意,要先在DDMS中选中某一进程(对应某一应用程序),才能在eclipse执行 Debug。 
******************************************************** 
创建sdcard和avd:(也可以正常调试) 
root@rdcdz10851:~# mksdcard 1024M sdcard.img 
root@rdcdz10851:~# android create avd -n myavd -t 1 -c sdcard.img 
root@rdcdz10851:~# emulator @myavd & 或者 emulator -avd myavd  (注意:要在sdcard.img所在目录执行启动模拟器命令 root@rdcdz10851:~# adb push Pictures/baqiao.jpg /sdcard/) 
root@rdcdz10851:~# ddms & 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值