编译Android系统源码
步骤:
1:下载源码
2:搭建编译环境
3:编译( 一定要等源码下载完整再编译)
硬件软件要求
官方文档:要求 | Android 开源项目 | Android Open Source Project
硬件要求:
如果是 Android 2.3.x (Gingerbread) 及更高版本(包括 master 分支),需要使用 64 位环境。如果是较低的版本,则可以在 32 位系统中进行编译。
如果要检出代码,至少需要 250GB 可用磁盘空间;如果要进行编译,则还需要 150GB。如果要进行多次编译,则需要更多空间。
如果在虚拟机中运行 Linux,则至少需要 16GB 的 RAM/交换空间。
我装的是虚拟机Ubuntu16.0.4,根据官方的要求准备了520G,下载的是8.1的源码,编译完以后发现还有250G。多分配点空间更好以免空间不足扩容麻烦。
一、 下载源码
Android 源码是非常庞大的,而且每个模块都是用git来进行管理 ,整个Android源码是由很多个git项目构成,Google对Android代码的更新也是更新到相应模块的git项目上。
那对于需要编译Android的开发者来说,要分别clone 每个git项目而且还要放到固定的位置确实是件惨绝人寰的事,所以Google就开发了一个基于Python编写的帮助开发者管理多个项目的工具,这个工具就叫repo,repo就是封装了git命令的python脚本。
由于国内网络的原因,我们使用国内的清华大学镜像下载源码和repo工具(镜像地址:AOSP | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror)网上很多博客使用的不是最新的镜像地址会导致代码拉取失败
1:下载 repo 工具
mkdir ~/bin # 在home下创建bin文件夹
PATH=~/bin:$PATH # 把bin文件夹加入环境变量的
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo #下载repo脚本
chmod a+x ~/bin/repo #添加权限
说明:curl 根据Linux提示安装即可。或者手动输入: sudo apt install curl
2:下载git ,配置用户名邮箱
sudo apt install git
git config --global user.email "xxx.xxx"
git config --global user.name "xxx"
3:下载源码
下载源码有两种方法:
1)Android 官方下载源代码
官方文档:下载源代码 | Android 开源项目 | Android Open Source Project
2)使用初始化包(建议)
我第一次是使用官方的方法,一直失败,可能是网络原因文件丢失。后来都是用这个方法。
下载 https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar,下载完成后记得根据 checksum.txt 的内容校验一下。
由于所有代码都是从隐藏的 .repo 目录中 checkout 出来的,所以我们只保留了 .repo 目录,下载后解压 再 repo sync 一遍即可得到完整的目录。
(AOSP项目当前所有的分支列表:代号、标记和 Build 号 | Android 开源项目 | Android Open Source Project)
二、搭建编译环境
官方文档:搭建构建环境 | Android 开源项目 | Android Open Source Project
安装openJDK8
sudo apt install openjdk-8-jdk
安装软件包
官方文档没有介绍Ubuntu 16.04所需的软件包。使用Ubuntu 16.04的小伙伴,需要安装下面的软件
三、准备编译
进入源码所在目录 根据我的步骤是在aosp目录,输入如下命令
. build/envsetup.sh # 前面的点要加上 不然提示权限被拒绝
通过lunch指令设置编译目标,所谓的编译目标就是生成的镜像要运行在什么样的设备上.这里我们设置的编译目标是aosp_arm64-eng,因此执行指令:
编译目标格式说明
编译目标的格式:BUILD-BUILDTYPE,比如上面的aosp_arm-eng的BUILD是aosp_arm,BUILDTYPE是eng.
BUILD指的是特定功能的组合的特定名称,即表示编译出的镜像可以运行在什么环境.其中,aosp(Android Open Source Project)代表Android开源项目;arm表示系统是运行在arm架构的处理器上,arm64则是指64位arm架构;处理器,x86则表示x86架构的处理器;此外,还有一些单词代表了特定的Nexus设备,下面是常用的设备代码和编译目标,更多参考官方文档
|受型号|设备代码|编译目标|
|---|----|---|
|Nexus 6P|angler|aosp_angler-userdebug|
|Nexus 5X|bullhead|aosp_bullhead-userdebug|
|Nexus 6|shamu|aosp_shamu-userdebug|
|Nexus 5|hammerhead|aosp_hammerhead-userdebug|
提示:如果你没有Nexus设备,那么通常选择arm或者x86即可
什么是BUILDTYPE
BUILD TYPE则指的是编译类型,通常有三种:
-user:代表这是编译出的系统镜像是可以用来正式发布到市场的版本,其权限是被限制的(如,没有root权限,不鞥年dedug等)
-userdebug:在user版本的基础上开放了root权限和debug权限.
-eng:代表engineer,也就是所谓的开发工程师的版本,拥有最大的权限(root等),此外还附带了许多debug工具
了解编译目标的组成之后,我们就可以根据自己目前的情况选择了.那不知道编译目标怎么办?
我们只需要执行不带参数的lunch指令,稍后,控制台会列出所有的编译目标,输入对应的数字即可如下:
3:开始编译
通过make指令进行代码编译,该指令通过-j
参数来设置参与编译的线程数量,以提高编译速度.比如这里我们设置8个线程同时编译:
make -j8
需要注意的是,参与编译的线程并不是越多越好,通常是根据你机器cup的核心来确定:core*2,即当前cpu的核心的2倍.比如,我现在的笔记本是双核四线程的,因此根据公式,最快速的编译可以make -j8.
(通过cat /proc/cpuinfo
查看相关cpu信息)
如果一切顺利的化,在几个小时之后,便可以编译完成.看到### make completed successfully (03:44:37(hh:mm:ss)) ###
表示你编译成功了.
参考:
自己动手编译Android源码(超详细) - 简书
编译Android系统源码相关推荐
- 编译Android系统源码--搭建环境
下载Ubantu14 Google官方建议使用Ubuntu 14 下载路径 双系统安装参考 下载VMware 建议:VMware Workstation 16 Pro 下载路径 下载Android系统 ...
- Win10 Linux子系统编译Android系统源码
一.前言 听说win10合入了Linux作为一个子系统,起初只以为是类似虚拟机的实现机制,想必对性能的提高也很有限.但是稍微了解却发现是并不是虚拟机的那种机制,而是可以完全发挥Host机器的性能,这无 ...
- Ubuntu编译Android系统源码(msm8909_android5.1.1)
安装工具 下载Android源码需要git,repo等工具,启动repo是Google写的一个专门用于下载Android源码的工具,主要调用了git. 科普一下git与repo的区别 Git:Git是 ...
- 编译Android系统源码推荐的电脑配置
工欲善其事,必先利其器. 看到很多客户,搞Android产品开发,用的电脑配置是惨不忍睹. 这些老板脑子有坑吗... ------------ 编译Android9推荐电脑配置: 处理器:酷睿i7 5 ...
- Android FrameWork 学习之Android 系统源码调试
这是很久以前访问掘金的时候 无意间看到的一个关于Android的文章,作者更细心,分阶段的将学习步骤记录在自己博客中,我觉得很有用,想作为分享同时也是留下自己知识的一些欠缺收藏起来,今后做项目的时候会 ...
- 02 A33 Android系统源码编译
下载源码包,解包后进入Android-SDK/tools目录. 1 先安装dtc-master和fakeroot工具. dtc-master安装方法: 解包后,在源码目录下: make &&a ...
- Android系统源码编译环境搭建(清华镜像,想编译什么版本都可以,只是有JDK和make的版本要求)
上一次,写得有点匆忙,现在补上清华镜像源码的详细下载方法. 编译Android 5.1源代码并烧录到Nexus4(用的是清华镜像的源) 环境准备: 基本环境:ubuntu-14.04-desktop- ...
- ubuntu-18.04.4 Android系统源码TP1A(Android 13)下载及编译
继上一篇博客介绍了VMware Workstation15 配置ubuntu-18.04.4,这篇主要介绍安装后环境搭建,Android源码的下载与编译.小编当前下载的是当前最新的代码,是主干分支代码 ...
- android系统源码7.1.2_r8下载,编译,运行到nexus5X上,修改源码并编译SDK进行测试
一,学习android系统源码下载,编译的作用 1,可以自己 DIY 自己的rom系统,从系统层面,宏观的加深理解 android系统 2,编译自己的 userdebug(原生root权限) rom, ...
- Android FrameWork学习(二)Android系统源码调试
点击打开链接 通过上一篇 Android FrameWork学习(一)Android 7.0系统源码下载\编译 我们了解了如何进行系统源码的下载和编译工作. 为了更进一步地学习跟研究 Android ...
最新文章
- Redis 数据类型介绍
- 工业用微型计算机(6)-指令系统(3)
- leetcode 476. 数字的补数(Java版)| How to extract ‘k’ bits from a given position in a number
- Ubuntu10.04No init found. Try passing init= bootarg解决方案
- 金山网络CEO傅盛:简约之美
- 人工智能语言python实验报告_【报名】人工智能语言Python启蒙课程(五六年级)...
- 【Flink】ExceptionInChainedOperatorException: Could not forward element to next operator Buffer
- Pytorch:手动求导和autograd的计算对比
- 寻找自己的道路——与技术同胞共勉 一种划分为七个阶段的道路:自信=意志=布局=切入点=团队=渠道=产品...
- Win10安装和配置IIS web服务器环境来运行ASP(动态服务器页面)脚本
- 脱机外挂制作完全版(制作原理与实现技术)
- OneNote同步问题,提示没有权限
- vsual studio 如何关闭禁止mscorsvw.exe (转)
- 网站在线视频播放实现
- MATLAB模拟陀螺仪的运动轨迹(附完整代码)
- 数据库连接10060_Navicat MySQL 数据库连接报:10060 “Unknow error” 错误 – DEFCON笔记...
- 业务实战记录(1):帮业务人员做道Excel题
- 内网终端管理:独立或统一管理都将大行其道
- 服务器显示器如何更换,笔记本怎么换显示器_笔记本换显示器教程-win7之家
- 机器人运动学仿真笔记