笔者依据罗升阳老师的《Android 系统源码情景分析》一书,尝试下载,编译和执行Android源码和内核源码。但可能是软件源“被墙”或版本号更新的原因。期间遇到诸多问题。笔者求助于强大的度娘和谷歌。最终编译成功,现将改动的步骤记录例如以下:

一.下载相关的工具包和依赖包
1.git工具的下载。不多说
2.Java SDK的下载(參考网址:http://blog.csdn.net/zjclugger/article/details/11762085)
此处建议下载jdk1.6.0_41
3.其它依赖包的下载
其它依赖包中,libwxgtk2.6-dev的安装会出现故障,将该工具包版本号改为libwxgtk2.8-dev就可以
注意:有一些工具包的下载会出现找不到包的问题,此时能够改变软件源。我是使用的华中科技大学的软件源http://mirrors.hust.edu.cn/ubuntu。亲測可用。



二.下载Android源码
结合书中内容和博客http://www.cnblogs.com/bluestorm/p/4419135.html可以成功下载
1.下载repo
1)创建repo文件夹

mkdir ~/bin 

PATH=~/bin:$PATH

2)下载repo(官方的repo下载不了。其它的repo大多比較旧。这个时比較新的)

git clone git://aosp.tuna.tsinghua.edu.cn/android/git-repo.git/

或者git clone git://git.omapzoom.org/git-repo.git

3)克隆下来后将git-repo中的repo文件复制到bin文件夹

cp git-repo/repo ~/bin/

4)改动repo文件,设置REPO_URL例如以下:

REPO_URL = 'git://aosp.tuna.tsinghua.edu.cn/android/git-repo'

2.初始化 repo

1)创建Android文件夹,并进入

mkdir Android

cd Android

2)初始化repo

repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-2.3.1_r1

ps:在初始化时,若提示须要email验证,使用例如以下命令后。再又一次上面命令:

git config --global user.email "you@example.com"

git config --global user.name "Your Name"

3)同步repo

repo sync

等待一段时间后(时间较长),Android源码便下载成功了。

此时Android文件夹中文件列表例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">


三,编译Android源码

运行make命令。

。。。但这远远不够。会遇到各种问题和报错。。此时借助度娘就可以。

笔者将一些常见的错误截图和解决方式罗列例如以下。希望能够对大家有一些帮助

1.

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

解决的方法:sudo apt-get install libc6-dev-i386

2.



watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">




3.

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">



4.

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">


5.




6.

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

7.





8.


9.编译成功后。得到一下结果:


10.编译sdk
make sdk。这一步也没有什么问题




四.执行Android模拟器
1.配置环境变量
export PATH=$PATH:~/Android/out/host/linux-x86/bin
export ANDROID_PRODUCT_OUT=~/Android/out/target/product/generic
2.执行模拟器
emulator命令(也能够指定kernel, system, data和ramdisk。如笔者所看到的。若不指定,则使用默认的)。。但往往会遇到例如以下问题:


可通过例如以下命令解决:sudo apt-get install libsdl1.2debian:i386。例如以下图所看到的:




五.android内核源码的下载
1.新建kernel目录,并进入
mkdir kernel
cd kernel
2.手动运行git命令下载:git clone http://android.googlesource.com/kernel/goldfish.git
但会出现故障。提示:remote error: SSL is required。例如以下图所看到的:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

解决方式:将“http”改动为“https”,例如以下图所看到的就可以:


3.git checkout remotes/origin/android-goldfish-2.6.29



六.编译android内核源码
这里依照书上的步骤。应该不会有什么问题。此处略去

Android源码和内核源码的下载,编译和执行的更多相关文章

  1. 【转】编译Android系统源码和内核源码

    原文网址:http://blog.csdn.net/jiangwei0910410003/article/details/37988637 好长时间没有写blog了,之所以没有写,主要还是工作上的事, ...

  2. FW 编译Android系统源码和内核源码

    编译Android系统源码和内核源码 分类: Android2014-07-21 20:58 7287人阅读 评论(28) 收藏 举报 好长时间没有写blog了,之所以没有写,主要还是工作上的事,发现 ...

  3. 编译Android系统源码和内核源码

    [日期:2016-01-11] 来源:Linux社区  作者:jiangwei [字体:大 中 小]     把我之前编译Android系统源码和内核源码的过程记录一下,因为这个过程真的是受益匪浅,看 ...

  4. 各Android版本的Linux内核表(待续)以及如何下载相应的android源码

    一.Android版本与Linux内核的关系 http://www.cnblogs.com/qiengo/archive/2012/07/16/2593234.html 英文名 中文名 Android ...

  5. Android : 修改内核源码 and 编译、打包成新的boot.img

    一.Android内核源码的下载: 1.Google GIT地址: $ git clone https://android.googlesource.com/kernel/common.git $ g ...

  6. 如何下载android源码与android内核源码

    首先,要分清楚,android的源代码和android的内核代码一般是分开的,要分别进行下载. 1.先下载android的源代码.(这里不包括android的内核代码)      下载最新的源代码,一 ...

  7. android内核源码下载和编译

    1.下载编译 新建kernel目录 ~/srcAndroid/src4.4.4_r1/kernel目录下,输入命令: seven@ThinkPad:~/srcAndroid/src4.4.4_r1/k ...

  8. Android源码、内核编译

    Android源码和内核的编译就是一场马拉松,每一个节点都耗时漫长,下载源码.编译源码.下载内核.编译内核,下载中途会断掉,编译中间会失败,求解再重来,又是一轮马拉松,于是每一步都要做好备份和记录,可 ...

  9. Android系统篇之—-编写简单的驱动程序并且将其编译到内核源码中【转】

    本文转载自:大神 通过之前的一篇文章,我们了解了 Android中的Binder机制和远程服务调用 在这篇文章中主要介绍了Android中的应用在调用一些系统服务的时候的原理,那么接下来就继续来介绍一 ...

随机推荐

  1. 发现JDK的3个bug

    1.Annotation引用非空enum数组返回空数组 首次发现时的环境:JDK 1.8 首次发现所在项目:APIJSON 测试用例: public enum RequestRole { /**未登录 ...

  2. linux进程——后台运行的方法

    linux进程后台运行的几种方法: 我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败. 如何让命 ...

  3. java爬虫--使用正则表达式获取网页中的email

    package com.enation.newtest; import java.io.*; import java.util.regex.*; import java.net.*; public c ...

  4. 让chrome支持本地Ajax请求

    Chrome的安全机制不能支持ajax的本地访问, 例如: 在JavaScript里面访问 URL:file:///E:/test.html,Chrome 浏览器报错:XMLHttpRequest c ...

  5. EOJ-大学生程序设计邀请赛(华东师范大学)-E-黑心啤酒厂

    E. 黑心啤酒厂 Time limit per test: 1.0 seconds Time limit all tests: 1.0 seconds Memory limit: 256 megaby ...

  6. Java并发容器--ConcurrentHashMap

    引子 1.不安全:大家都知道HashMap不是线程安全的,在多线程环境下,对HashMap进行put操作会导致死循环.是因为多线程会导致Entry链表形成环形数据结构,这样Entry的next节点将永 ...

  7. 接下来打算写一下visual stuido 2013使用git进行远端管理。

    虽然我有了vs的账号,也vs2013开始已经可以进行远端的账户管理了,可是vs的版控毕竟有些依赖vs,想想还是用git吧 今天把这个环境的整套都弄地基本熟了.记录一下,算是一个小结.开始搭建系统框架

  8. Python学习杂记_13_模块(一)_基础

    一.模块和模块调用 模块其实就是一个Python文件,模块的调用实际就是把这个Python文件从头到尾执行一遍. 如果是在相同路径下的调用: 1. 先导入整个模块,然后引用模块中的方法 import ...

  9. Fiddler抓包1-抓firefox上https请求【转载】

    本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/p/6538021.html 前言 fiddler是一个很好的抓包工具,默认是抓http请求的, ...

  10. hdu 5125(LIS变形)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5125 题解: 这个题dp[i][0],dp[i][1]数组分别记录在第i个位置取a[i]和b[i]时 ...