Android源码4.4.4_r1下载和编译
系统:ubuntu 16.04.2 TLS
1.源码下载:
sudo apt-get install curl
curl https://storage.googleapis.com/git-repo-downloads/repo > repo
chmod a+x repo mkdir srcAndroid
cd srcAndroid
git config --global user.name "xunbu7"
git config --global user.email "xunbu7@gmail.com"
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-4.4.4_r1
repo sync
选择目标版本源码,参考编译版本标签对照表:
https://source.android.com/source/build-numbers
2.驱动下载:
https://developers.google.com/android/drivers

将下载下来的3个压缩包加压到源码目录,分别执行3个sh文件,输入“I ACCEPT”。可以看到源码目录多了一个vendor目录。删除sh文件即可。
3.环境配置
3.1 jdk环境
4.4.4_r1需要jdk6环境,而标准库不支持旧版本,所以下载方式如下:
Open the terminal and execute below commands one by one. It will install JDk as well as JRE. No need to configure anything. It will take care of everything.
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update sudo apt-get install oracle-java6-installer //JDK 6 along with JRE
sudo apt-get install oracle-java7-installer //OR FOR JDK 7
有时候不知道java安装在哪里了,通过whereis java命令不能知道java真实的安装路径,可以通过update-alternatives --config java命令查看
bean@ubuntu :~$ update-alternatives --config java
There is only one alternative in link group java: /usr/lib/jvm/java--oracle/jre/bin/java
Nothing to configure.
或者官网下载到本地后
seven@ThinkPad:~/Downloads$ chmod a+x jdk-6u45-linux-x64.bin
seven@ThinkPad:~/Downloads$ ./jdk-6u45-linux-x64.bin
移动到自定义目录:
seven@ThinkPad:~/Documents/Android$ mv -f ~/Downloads/jdk1..0_45/ .
seven@ThinkPad:~/Documents/Android/jdk1..0_45$ pwd
/home/seven/Documents/Android/jdk1..0_45
修改配置文件:
seven@ThinkPad:~$ vim .bashrc
内容:
export JAVA_HOME=/home/seven/Documents/Android/jdk1..0_45
export JRE_HOME=${JAVA_HOME}/jre
export PATH=$PATH:${JAVA_HOME}/bin
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib seven@ThinkPad:~$ source .bashrc
seven@ThinkPad:~$ javac -version
javac 1.6.0_45
3.2 安装make
ubuntu16.04自带的make版本过高,无法编译。因此需要将make降至3.82.
下载地址ftp://ftp.gnu.org/gnu/make/
下载后到Downloads下将文件拷到其他目录(home下即可),然后解压
tar -zxvf make3.8.2.tar.gz
解压后进入到make3.8.2的目录下
./configure
make
sudo make install
执行完后在/usr/local/bin中可得到新版本的make,复制到/usr/bin中即可
seven@ThinkPad:/usr/local/bin$ sudo mv make /usr/bin
注:make过程中可能会出现错误,不用理会,只要make install能够成功执行即可。
3.3 安装其他编译环境
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install dpkg-dev libsdl1.-dev libesd0-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential
sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib
sudo apt-get install libc6-dev-i386
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install lib32z-dev ccache
sudo apt-get install unzip m4
4.编译
echo export USE_CCACHE=1 >> ~/.bashrc
prebuilts/misc/linux-x86/ccache/ccache -M 50G
source build/envsetup.sh
lunch aosp_hammerhead-userdebug
//虚拟机中当时必须用sudo su (切换su,root下:否则上面5儿子配置会被虚拟机配置覆盖),后来用真实机不用也ok。
make –j8
5.刷机
源码编译完成后,我们开始将编译好的系统烧录进手机中。首先,先将我们的Nexus 5连接到电脑上,注意一定要打开USB调试,连接后手机可能会提示电脑要调试这台手机,允许即可。然后,我们令手机进入recovery模式,还是刚才的terminal(在源码根目录下),输入以下命令:
seven@ThinkPad:~/srcAndroid/src4.4.4_r1/out/host/linux-x86/bin$ ./adb reboot bootloader
seven@ThinkPad:~/srcAndroid/src4.4.4_r1/out/host/linux-x86/bin$ sudo ./fastboot devices(用sudo,否则发现不了设备)
[sudo] password for seven:
072ba3800ae5fd9c fastboot
seven@ThinkPad:~/srcAndroid/src4.4.4_r1/out/host/linux-x86/bin$ sudo ANDROID_PRODUCT_OUT=/home/seven/srcAndroid/src4.4.4_r1/out/target/product/hammerhead ./fastboot flashall -w(用sudo,否则发现不了设备)
或者也可以一个个img刷入:
、重启进入刷机模式
adb reboot bootloader
、依次刷入其他镜像文件:
fastboot flash recovery recovery.img
fastboot flash boot boot.img
fastboot flash system system.img
、强烈建议双清(注意备份数据):
fastboot flash cache cache.img
fastboot flash userdata userdata.img
、再次重启:
fastboot reboot
Android源码4.4.4_r1下载和编译的更多相关文章
- android源码环境下用mmm/mm编译模块,输出编译log到文件的方法
android源码环境下用mmm/mm编译模块,输出编译log到文件的方法 1,在android目录下直接用mmm命令编译, log信息保存在android目录下 mmm packages/apps/ ...
- Android源码分析(二)-----如何编译修改后的framework资源文件
一 : 编译framework资源文件 如果修改android framework资源文件,需要先编译资源文件,然后再编译framework才可以正常引用, 进入项目目录 cd work/source ...
- 查看android源码,windows环境下载源码
查看源码 参考: http://blog.csdn.net/janronehoo/article/details/8560304 步骤: 添加chrome插件 Android SDK Search 进 ...
- 编译android源码官方教程(3)下载代码
https://source.android.com/source/downloading.html Downloading the Source IN THIS DOCUMENT Installin ...
- Android源码是这样搞到的(图解)
Android学习到一定程度,就一定要多读代码多思考,Android源码就是很好的学习材料,本文就是把Android的源码下载下来.我们知道Android的源码是用Git这个分布式版本号控制工具管理的 ...
- Android 源码编译之旅
目录 前言 背景 安装软件 正文 Mac 分区 移动硬盘分区 Repo 下载源码 编译 源码导入 Android Studio 查看 碰到的问题 Could not find a supported ...
- Android源码分析(四)-----Android源码编译及刷机步骤
一 : 获取源码: 每个公司服务器地址不同,以如下源码地址为例: http://10.1.14.6/android/Qualcomm/msm89xx/branches/msm89xx svn环境执行: ...
- 编译android源码m、mm、mmm命令的使用
http://blog.163.com/zz_forward/blog/static/212898222201442873435471/ gcc怎么查看它的默认include路径和库的路径呢? //- ...
- Android源码分析(六)-----蓝牙Bluetooth源码目录分析
一 :Bluetooth 的设置应用 packages\apps\Settings\src\com\android\settings\bluetooth* 蓝牙设置应用及设置参数,蓝牙状态,蓝牙设备等 ...
随机推荐
- Linux命令应用大词典-第8章 日期和时间
8.1 cal:显示日历信息 8.2 date:显示和设置系统日期和时间 8.3 hwclock:查看和设置硬件时钟 8.4 clock:查看和设置硬件时钟 8.5 clockdiff:主机之间测量时 ...
- Unity编辑器 - 资源修改立即写入磁盘AssetDataBase.SaveAssets()
Unity编辑器 - 资源修改立即写入磁盘AssetDataBase.SaveAssets() 在编写编辑器时,如果需要修改Unity序列化资源(如Prefab,美术资源,ScriptableObje ...
- Java学习 · 初识 异常机制
异常机制 1. 程序中的异常 a) b) 面对异常如何解决 i. 由开发者通过if-else来解决 代码臃肿 程序员需要花费很大精力 ii. ...
- 【Linux 运维】查看网络连接状态信息之netstat和ss命令详解
一.netstat 常用命令详解 通过man netstat可以查看netstat的帮助信息: netstat 命令:用于显示各种网络相关信息,如网络连接,路由表,接口状态,无效连接,组播成员 等等. ...
- 深度学习笔记 (一) 卷积神经网络基础 (Foundation of Convolutional Neural Networks)
一.卷积 卷积神经网络(Convolutional Neural Networks)是一种在空间上共享参数的神经网络.使用数层卷积,而不是数层的矩阵相乘.在图像的处理过程中,每一张图片都可以看成一张“ ...
- #pragma pack(n)对齐格式
#pragma pack(n)对齐格式 #pragma pack(n) 是预处理器用来指定对齐格式的指令,表示n对齐.当元素字节小于n时,要扩展到n:若元素字节大于n则占用其实际大小. struct ...
- 十三:Transparent Encryption in HDFS(转)
透明加密:http://blog.csdn.net/linlinv3/article/details/44963429 hadoop透明加密 kms 简介 Hadoop Key Manag ...
- location 匹配规则 (NGINX)
转:https://moonbingbing.gitbooks.io/openresty-best-practices/ngx/nginx_local_pcre.html location 匹配规则 ...
- js中的数组对象排序
一.普通数组排序 js中用方法sort()为数组排序.sort()方法有一个可选参数,是用来确定元素顺序的函数.如果这个参数被省略,那么数组中的元素将按照ASCII字符顺序进行排序.如: var ar ...
- 软工2017第四周作业结对编程——个人psp
29.22 --9.26本周例行报告 1.PSP(personal software process )个人软件过程. 类型 任务 预计时间 开始时间 结束时间 中断时间 ...