Android源代码的下载和编译

纸上得来终觉浅,绝知此事要躬行。

        从事Android开发两年多,在公司里用的都是平台提供上提供的源代码,终于有一天自己准备彻彻底底的滤一下这个流程,发现这个过程没有想象中那么复杂,网上的资料很多,遇到一些问题的时候就google或baidu一下,但当做完这个过程后,会感觉明了了不少。

      

一、下载源代码

GOOGLE网站已经介绍的非常详细了,参考 http://source.android.com/source/downloading.html

讲的非常详细,安装repo和repo客户端,想说一下自己的下载技巧。

自己是第三次才下载成功的,开始两次直接repo sync,但有时候发现在一个某过程中进度20%多的时候就停住了,一天都没有动静,然后就断掉重新repo sync,几天都没有效果。做后使用多线程  repo sync -j 64, 够狠吧,呵呵,一晚上就下载了6G多,断掉一次,又重新repo sync了一次,ok。

内核要单独下载:参考http://blog.csdn.net/luoshengyang/article/details/6564592

二、编译

1. 用的是ubuntu12.04,默认gcc和g++是4.6的,要切换成4.4的,方法:

sudo apt-get install gcc-4.4 g++-4.4 g++-4.4-multilib

sudo mv gcc gcc.bak
sudo ln -s gcc-4.4 gcc

sudo mv g++ g++.bak
sudo ln -s g++-4.4 g++

用gcc -v 查看gcc版本。

 2. 判断java版本

编译要用1.6的,但我装得是1.6.0.7,所以修改 build/core/main.mk,注释掉判断脚本时退出的语句

3. host Prebuilt: monkeyrunner (out/host/linux-x86/obj/EXECUTABLES/monkeyrunner_intermediates/monkeyrunner)
host C++: obbtool <= frameworks/base/tools/obbtool/Main.cpp
<命令行>:0:0: 错误: “_FORTIFY_SOURCE”重定义 [-Werror]
<built-in>:0:0: 附注: 这是先前定义的位置
cc1plus:所有的警告都被当作是错误

改正:
修改build/core/combo/HOST_linux-x86.mk 61行,将
HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0
修改成
HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
Android源码换服务器了,具体的看http://source.android.com/source/downloading.html

4. external/oprofile/libpp/format_output.h:94:22: 错误: reference ‘counts’ cannot be declared ‘mutable’ [-fpermissive]
解决办法:
external/oprofile/libpp/format_output.h
把:
mutable counts_t & counts;
改为:
counts_t & counts;

5. cts/apps/CtsVerifier/src/com/android/cts/verifier/PassFailButtons.java:191: android.app.Activity 中的 onCreateDialog(int,android.os.Bundle) 无法实现 com.android.cts.verifier.PassFailButtons.PassFailActivity 中的 onCreateDialog(int,android.os.Bundle);正在尝试指定更低的访问权限;为 public
    private static <T extends android.app.Activity & PassFailActivity>

解决方法:
cd cts;
将Android.mk中的
#include cts/CtsTestCoverage.mk
#include $(call all-subdir-makefiles)
注释掉。
也就是不在编译cts模块,后面要修改过来,因为有时候还是要cts测试的。


最后,mage_intermediates/system.img
Install system fs image: out/target/product/generic/system.img
Target ram disk: out/target/product/generic/ramdisk.img
Target userdata fs image: out/target/product/generic/userdata.img
显示编译成功

添加PATH,

export PATH=$PATH:~/Android/out/host/linux-x86/bin 
export ANDROID_PRODUCT_OUT=~/Android/out/target/product/generic


然后,执行emulator,启动模拟器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值