系统: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下载和编译的更多相关文章

  1. android源码环境下用mmm/mm编译模块,输出编译log到文件的方法

    android源码环境下用mmm/mm编译模块,输出编译log到文件的方法 1,在android目录下直接用mmm命令编译, log信息保存在android目录下 mmm packages/apps/ ...

  2. Android源码分析(二)-----如何编译修改后的framework资源文件

    一 : 编译framework资源文件 如果修改android framework资源文件,需要先编译资源文件,然后再编译framework才可以正常引用, 进入项目目录 cd work/source ...

  3. 查看android源码,windows环境下载源码

    查看源码 参考: http://blog.csdn.net/janronehoo/article/details/8560304 步骤: 添加chrome插件 Android SDK Search 进 ...

  4. 编译android源码官方教程(3)下载代码

    https://source.android.com/source/downloading.html Downloading the Source IN THIS DOCUMENT Installin ...

  5. Android源码是这样搞到的(图解)

    Android学习到一定程度,就一定要多读代码多思考,Android源码就是很好的学习材料,本文就是把Android的源码下载下来.我们知道Android的源码是用Git这个分布式版本号控制工具管理的 ...

  6. Android 源码编译之旅

    目录 前言 背景 安装软件 正文 Mac 分区 移动硬盘分区 Repo 下载源码 编译 源码导入 Android Studio 查看 碰到的问题 Could not find a supported ...

  7. Android源码分析(四)-----Android源码编译及刷机步骤

    一 : 获取源码: 每个公司服务器地址不同,以如下源码地址为例: http://10.1.14.6/android/Qualcomm/msm89xx/branches/msm89xx svn环境执行: ...

  8. 编译android源码m、mm、mmm命令的使用

    http://blog.163.com/zz_forward/blog/static/212898222201442873435471/ gcc怎么查看它的默认include路径和库的路径呢? //- ...

  9. Android源码分析(六)-----蓝牙Bluetooth源码目录分析

    一 :Bluetooth 的设置应用 packages\apps\Settings\src\com\android\settings\bluetooth* 蓝牙设置应用及设置参数,蓝牙状态,蓝牙设备等 ...

随机推荐

  1. liunx环境下安装禅道

    环境: vm12.5.2 CentOS-7-x86_64 ZenTaoPMS.9.1.stable.zbox_64 SecureCRT 8.0 因为liunx环境下配置apache, php, mys ...

  2. Python搭配unittest

    unittest是Python的单元测试框架, 类似于Java里面的TestNG. Unittest.py: import unittest from selenium import webdrive ...

  3. Java开发工程师(Web方向) - 04.Spring框架 - 第5章.Web框架

    第5章--Web框架 Web框架概述 Web框架单元测验 本次得分为:13.50/15.00, 本次测试的提交时间为:2017-09-25 1单选(2分) 关于Spring MVC中Dispatche ...

  4. 【label】标签组件说明

    label标签组件 用来改进表单组件的可用性,使用for属性找到对应的id,或者将控件放在该标签下,当点击时,就会触发对应的控件.目前可以绑定的控件有:<button/>, <che ...

  5. 《Effective C++》读书笔记 条款03 尽可能使用const 使代码更加健壮

    如果你对const足够了解,只需记住以下结论即可: 将某些东西声明为const可帮助编译器侦测出错误用法,const可被施加于任何作用于内的对象.函数参数.函数返回类型.成员函数本体. 编译器强制实施 ...

  6. CsvHelper文档-1前言

    CsvHelper文档-1前言 英文文档链接地址:CsvHelper Document 开源项目地址:CsvHelper 翻译于2018-1-5,原本可能会随时更新: 每一段代码都是经过我实际测试的, ...

  7. python 读取 log日志的编码问题

    1.我要读取log日志的”执行成功”的个数,log日志编码格式为GBK 2.显示报错,大致意思是说utf-8的代码不能解析log日志 3.后来想想把log日志用GBK编码读出来,写到新文件中,用utf ...

  8. 基础数据类型-list

    序列是python中的基础数据结构,序列里每一个元素都有一个下标,从0开始,依次递增. list,tuple,dictionary是使用最频繁的三类数据结构. (1)序列都有的方法包括:索引,切片,检 ...

  9. activiti工作流已办和待办查询sql

    最近项目中遇到一个问题,需要activiti的工作流表和业务表关联分页查询,然而我对于工作流的查询并不太熟悉,所以学习并总结如下. 想看看activiti到底怎么查询的待认领和待办.已办的查询sql, ...

  10. Java容器之Collections

    Collections 类来源于 java.util.Collections,从 java.lang.object继承. 此类完全由在 collection 上进行操作或返回 collection 的 ...