编译环境是Ubuntu12.04。手机nexus 5,编译安卓6.0.1源码并烧录到真机。

源码用的是科大的镜像:http://mirrors.ustc.edu.cn/aosp-monthly/,下载完之后会有一个aosp-latest.tar文件,然后新建一个仓库,把它解压到你的仓库里。这里下载会需要点时间。

然后repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b 你的版本,比如现在我们编译6.0.1的版本,就直接repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-6.0.1_r1

完了之后执行 repo sync ,同步更新你的代码,这里会花费点时间。

注:这里有些人如果第一次用repo的话,得先要安装repo。然后才能用

repo sync 完了之后,会在你的仓库里面出现很多文件。如下图,刚开始第一次编译的时候是没有out生成的。

因为还要刷入真机,所以我们还需要驱动,你们可以看自己用的是什么机型,然后去官网找相对应的驱动,

驱动网址 https://developers.google.com/android/nexus/drivers#hammerheadmra58k

我这里用的是Nexus5,所以我自己下了一个,如果官网进不了的话,我这里有一个Nexus5的驱动,链接:https://pan.baidu.com/s/1kx4J8pf2CV3yH54tgwEXUA 密码:s9n6

里面有三个.sh文件,把它们放在你们项目的根目录,然后分别执行.sh文件,执行之后,它会有说明,一直按回车,这时要注意,在执行每个文件最后的时候,它会提示让你输入 I ACCEPT。输入完了之后,就会在当前目录生成vendor文件。

这时所有东西都就绪了,下一步就可以开始编译源码。

source build/envsetup.sh

执行lunch命令,选择你要编译的手机的版本,我这里nexus 5选择hammerhead。如下图所示

选择完之后,然后执行以下make clobber,清除无用的编译。

然后执行prebuilts/misc/linux-x86/ccache/ccache -M 50G设置缓存大小。

通常是根据你机器cup的核心来确定:core*2,即当前cpu的核心的2倍.

查看核心数量

grep 'core id' /proc/cpuinfo | sort -u | wc -l

查看线程数

grep 'processor' /proc/cpuinfo | sort -u | wc -l

比如,我现在的笔记本是双核四线程的,因此根据公式,最快速的编译可以make -j8.

然后就直接等编译了。

PS:在编译的过程中有可能会遇到以下的失败:

out/host/linux-x86/bin/jack-admin: 行 37: SETTING_VERSION: 为绑定变量
make: *** [out/host/linux-x86/framework/jack.jar] 错误 1
make: *** 正在删除文件“out/host/linux-x86/framework/jack.jar”

修改方法:在./prebuilts/sdk/tools/jack-admin里面SETTING添加SETTING_VERSION=2
在“SETTING_VERSION -lt 2”改为“SETTING_VERSION -eq 2”。然后重新编译即可。

大概编译2个多小时,就编译成功了。生成的镜像文件在out/target/product/文件下面。

这时候可以烧录到真机了。把调试模式打开,然后接上USB调试。

输入一个命令提示符:adb reboot bootloader。

然后手机屏幕显示 等待bootloader界面在屏幕上出现: fastboot oem unlock

接着一个unlock bootloader的选择确认页面会出现。用音量来选择到“YES,”,用电源键来确定。

这时你手机上的所有数据都将被抹去,LOCK STATE将变成unlocked。不应该超过一两分钟。

重新开机后的画面下面出现了一个打开的锁,以后刷机都会在解锁状态下了。

然后进入到你刚刚的那个目录下,里面有.img镜像文件。通过fastboot刷入即可,首先你先看看你的fastboot 能不能识别到设备,输入fastboot devices

如果出现 no permissions fastboot ,就直接进入到out/host/linux-x86/bin 下面输入以下的命令:

sudo chown root:root fastboot

sudo chmod +s fastboot

然后再重新看下设备是否能识别到,输入fastboot devices

如果识别到了,再进入到镜像文件img那个文件里面执行以下命令进行烧录。

fastboot flash boot boot.img
fastboot flash cache cache.img
fastboot flash recovery recovery.img
fastboot flash system system.img
fastboot flash userdata userdata.img
fastboot reboot

最后一条命令是重启命令,等大约两分钟,就会出现

至此,源码编译烧录真机完成。

Android6.0源码下载编译刷入真机的更多相关文章

  1. 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)

                 分类: Android 系统开发(5)                                              作者同类文章X 版权声明:本文为博主原创文章 ...

  2. 在Ubuntu Server14.04上编译Android6.0源码

    此前编译过Android4.4的源码,但是现在Android都到了7.0的版本,不禁让我感叹Google的步伐真心难跟上,趁这周周末时间比较充裕,于是在过去的24小时里,毅然花了9个小时编译了一把An ...

  3. Android6.0 源码修改之 Contacts应用

    一.Contacts应用的主界面和联系人详情界面增加顶部菜单添加退出按钮 通过Hierarchy View 工具可以发现 主界面对应的类为 PeopleActivity 联系人详情界面对应的类为 Qu ...

  4. Android6.0 源码修改之 仿IOS添加全屏可拖拽浮窗返回按钮

    前言 之前写过屏蔽系统导航栏功能的文章,具体可看Android6.0 源码修改之屏蔽导航栏虚拟按键(Home和RecentAPP)/动态显示和隐藏NavigationBar 在某些特殊定制的版本中要求 ...

  5. linux2.4.0源码下载地址(配合毛德操情景分析)

    https://www.kernel.org/pub/linux/kernel/v2.4/

  6. 从谷歌官网下载android 6.0源码、编译并刷入nexus 6p手机

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/fuchaosz/article/details/52473660 1 前言 经过一周的奋战,终于从谷 ...

  7. Docker编译Android6.0源码

    docker环境配置 更正时区时间 # 查看当前时间 $ date # 修改当前时间 $ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ech ...

  8. Ubuntu16.04下编译android6.0源码

    http://blog.csdn.net/cnliwy/article/details/52189349 作为一名合格的android开发人员,怎么能不会编译android源码呢!一定要来一次说编译就 ...

  9. Android 11 源码下载+编译教程

    下载AOSP源码 这里我使用的是外国语大学的镜像执行的下载,Mac系统的话,一定要在区分大小姐的磁盘下执行 repo init -u https://mirrors.bfsu.edu.cn/git/A ...

随机推荐

  1. VRRP&HSRP

    HSRP 活跃路由器和备用路由器都会向组播地址 224.0.0.2  UDP 1985  端口发送hello消息. VRRP组中有一台主用路由器(Master),以及一台或多台备用路由器(Backup ...

  2. Tomcat简介

    Tomcat简单的说就是一个运行JAVA的网络服务器,底层是Socket的一个程序,它也是JSP和Serlvet的一个容器. 如果你学过html,css,你会知道你写的页面只能自己访问,别人不能远程访 ...

  3. ZooKeeper和Curator相关经验总结

    一.关于ZooKeeper的watch用法,需要注意 详细说明如下: ZooKeeper Watches All of the read operations in ZooKeeper - getDa ...

  4. 第五章:Android布局

    View的布局显示方式有下面几种:线性布局(Linear Layout).相对布局(Relative Layout).表格布局(Table Layout).帧布局(FrameLayout).绝对布局( ...

  5. 【Shell实战】批量在多台服务器上执行命令

    功能说明:批量在多台服务器上执行命令 #!/bin/bash # ========================================== # 功能:批量在多台服务器上执行命令 # 方法: ...

  6. Java 8 新特性-菜鸟教程 (7) -Java 8 Nashorn JavaScript

    Java 8 Nashorn JavaScript Nashorn 一个 javascript 引擎. 从JDK 1.8开始,Nashorn取代Rhino(JDK 1.6, JDK1.7)成为Java ...

  7. lucene-solr源码编译导入eclipse--转

    https://www.jianshu.com/p/8a217ce05475 github地址:https://github.com/apache/lucene-solr 第一步:git clone ...

  8. yum安装时遇到的问题

    在yum 安装出现下面的提示的时候,需要安装GPG key warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID e85 ...

  9. AD预测论文研读系列2

    EARLY PREDICTION OF ALZHEIMER'S DISEASE DEMENTIA BASED ON BASELINE HIPPOCAMPAL MRI AND 1-YEAR FOLLOW ...

  10. Hibernate学习(一)———— 第一个hibernate工程

    一.什么是Hibernate? 轻量级JavaEE应用的持久层框架,是一个完全的ORM框架.(说完这句话,肯定有很多人懵圈了,下面我来一个个解释) 持久化:将我们想要保存的数据保存到硬盘上,也就是我们 ...