摘要:如下图,刚开始第一次编译的时候是没有生成的。如下图所示选择完之后,然后执行以下,清除无用的编译。然后重新编译即可。不应该超过一两分钟。最后一条命令是重启命令,等大约两分钟,就会出现至此,源码编译烧录真机完成。
编译环境是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
最后一条命令是重启命令,等大约两分钟,就会出现
至此,源码编译烧录真机完成。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/2835.html
摘要:不得不说现在的刷机工具都做的方便快捷,只需要简单的几天命令就解决了。以前用刷的时候还需要装一堆驱动软件啥的。此办法的好处是无需很多技巧,但是坏处是包更新不及时,比如到了安卓使用该包就会刷入老的内核版本。工具包刷的前记得开启调试模式。 不得不说现在的刷机工具都做的方便快捷,只需要简单的几天命令就解决了。以前用windows刷的时候还需要装一堆驱动软件啥的。 原文链接: nexus5 刷 ...
摘要:之前自己编译过系统,刷入手机。编译系统太大了,今天记下自己编译及刷入内核的方法。文件夹重命名为,放到内核文件夹同一层目录。自己编译过内核肯定都知道,如果报错,可能需要安装相关库。按直接编译,按直接打包。之前自己编译过Android系统,刷入手机。编译很简单,但坑比较大,主要是GFW埋的坑。。 编译android系统太大了,今天记下自己编译及刷入android内核的方法。 主要是看到第三方内核...
摘要:编译可在上运行的基于作者寻禹阿里聚安全前言下文中无特殊说明时代表的缩写。在的终端中输入命令,表示设备上以权限重启。找到文件,将该文件中相应的更改为。作者寻禹阿里聚安全,更多技术文章,请访问阿里聚安全博客 编译可在Nexus5上运行的CyanogenMod13.0 ROM (基于Android6.0) 作者:寻禹@阿里聚安全 前言 下文中无特殊说明时CM代表CyanogenMod的缩写...
摘要:前言整体架构掘金概述该篇文章主要讲解的整体框架和工作流程,不会涉及到具体的实现。产品汪了解安卓的历史版本吗产品掘金最近在看的设计规范,顺便也熟悉下的版本历史。 关于 Android 7.0 适配中 FileProvider 部分的总结 - 掘金由于 Android 7.0 或更高版本的系统在国内手机市场上的占比不是很高,很多 Android 开发人员并没有做 7.0 适配工作,同时测试...
阅读 1395·2021-10-14 09:42
阅读 3662·2021-09-07 09:59
阅读 1099·2019-08-30 15:55
阅读 449·2019-08-30 11:17
阅读 3232·2019-08-29 16:06
阅读 354·2019-08-29 14:06
阅读 2997·2019-08-28 18:14
阅读 3473·2019-08-26 13:55