Android13源码下载及全编译流程

简介: Android13源码下载及全编译流程

Android13源码下载及全编译流程


一、源码下载

1.1、配置要求

       官方推荐配置请参考:https://source.android.google.cn/docs/setup/start/requirements?hl=zh-cn,重点有如下几项:

1.1.1、硬件配置要求

       1、内存至少 16GB,实测建议至少 32G。

       2、磁盘至少 250GB,实测建议至少 512G。

1.1.2、软件要求

       推荐使用 Ubuntu 18.04 (Bionic Beaver)、 Docker、Linux。

       2021年6月22日起,不再支持 Windows 或 MacOS 上构建。

       2020年1月1日起,不再支持 python2,请使用 python3。

1.2、下载环境搭建

1.2.1、依赖安装

       请使用如下命令安装相关依赖:

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip

1.2.2、工具安装

       请使用如下命令安装相关工具:

sudo apt-get install curl git python3

1.2.3、git配置

       请使用如下命令对git进行配置:

git config --global user.name 'xxx'
git config --global user.email 'xxx@xxx.com'

1.2.4、repo配置

       请使用如下命令更新repo并进行配置:

mkdir ~/bin
PATH=~/bin:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
chmod +x ~/bin/repo

1.3、源码下载

1.3.1、明确下载版本

       请通过浏览器访问:https://source.android.google.cn/docs/setup/about/build-numbers?hl=zh-cn#source-code-tags-and-builds,来选取需要的版本。

       网页显示如下:

1.3.2、替换为清华源

       请使用如下命令将源替换为清华源:

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

1.3.3、初始化仓库并指定分支

       请使用如下命令初始化仓库并指定分支,此处以android-13.0.0_r7分支为例。

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-13.0.0_r7

执行结果如下:

1.3.4、同步全部源码

       使用如下命令进行源码同步:

repo sync -c -j8

此处为了加快速度使用了-c参数,表示只同步当前分支,-j8表示使用8个线程今天同步代码,使用多少个线程请根据自己的机器配置自行修改。

       代码同步结果如下:

Checking out: 100% (1134/1134), done in 25m36.486s
repo sync has finished successfully.

此时Android13源码已经同步完成。

二、Android源码编译

2.1、编译环境搭建

       使用如下命令安装JDK:

sudo apt-get install openjdk-11-jdk

安装完成后可以使用如下命令查看是否按照成功:

执行如下命令安装编译依赖:

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

2.2、全编译

2.2.1、初始化编译环境

       执行如下命令进行编译环境初始化:

source build/envsetup.sh
或者:
. build/envsetup.sh

2.2.2、选择构建目标

       执行lunch命令显示如下:

选择需要构建的目标,此处以aosp_arm-eng为例,执行结果如下:

2.2.3、编译固件

       执行如下命令进行固件编译:

make -j24

会有如下信息输出:

三、常见问题及解决方法

3.1、libncurses.so.5库找不到问题

       报错如下:

执行如下命令:

sudo apt-get install libncurses

输出如下信息:

3.2、磁盘空间不足

此处只能增加系统硬盘。

相关文章
|
18天前
|
Java API 开发工具
如何将python应用编译到android运行
【6月更文挑战第27天】本文介绍在Ubuntu 20上搭建Android开发环境,包括安装JRE/JDK,设置环境变量,添加i386架构,安装依赖和编译工具。并通过`p4a`命令行工具进行apk构建和清理。
35 6
如何将python应用编译到android运行
|
25天前
|
Android开发 iOS开发
android自动化编译
android自动化编译
|
26天前
|
ARouter IDE 开发工具
Android面试题之App的启动流程和启动速度优化
App启动流程概括: 当用户点击App图标,Launcher通过Binder IPC请求system_server启动Activity。system_server指示Zygote fork新进程,接着App进程向system_server申请启动Activity。经过Binder通信,Activity创建并回调生命周期方法。启动状态分为冷启动、温启动和热启动,其中冷启动耗时最长。优化技巧包括异步初始化、避免主线程I/O、类加载优化和简化布局。
35 3
Android面试题之App的启动流程和启动速度优化
|
10天前
|
存储 安全 Java
Android面试题之ArrayList源码详解
ArrayList是Java中基于数组实现的列表,提供O(1)的索引访问,但插入和删除操作平均时间复杂度为O(n)。默认容量为10,当需要时会通过System.arraycopy扩容。允许存储null,非线程安全。面试常问:List是接口,ArrayList是其实现之一,推荐使用List接口编程以实现更好的灵活性。更多详情见[ArrayList源码](http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/util/ArrayList.java#ArrayList.Node)。
11 2
|
17天前
|
Android开发 Windows
如何离线下载 Microsoft Corporation II Windows Subsystem for Android
如何离线下载 Microsoft Corporation II Windows Subsystem for Android
17 1
|
18天前
|
安全 网络协议 算法
Android网络基础面试题之HTTPS的工作流程和原理
HTTPS简述 HTTPS基于TCP 443端口,通过CA证书确保服务器身份,使用DH算法协商对称密钥进行加密通信。流程包括TCP握手、证书验证(公钥解密,哈希对比)和数据加密传输(随机数加密,预主密钥,对称加密)。特点是安全但慢,易受特定攻击,且依赖可信的CA。每次请求可能复用Session ID以减少握手。
24 2
|
24天前
|
C# Android开发 开发者
Android gradle编译时字节码处理
Android gradle编译时字节码处理
20 1
|
6天前
|
消息中间件 前端开发 Android开发
Android面试题自定义View之Window、ViewRootImpl和View的三大流程
Android开发中,View的三大核心流程包括measure(测量)、layout(布局)和draw(绘制)。MeasureSpec类在测量过程中起到关键作用,它结合尺寸大小和模式(EXACTLY、AT_MOST、UNSPECIFIED)来指定View应如何测量。onMeasure方法用于自定义View的测量,布局阶段,ViewGroup调用onLayout确定子元素位置,而draw阶段按照特定顺序绘制背景、内容、子元素和装饰。整个流程始于ViewRootImpl的performTraversals,该方法触发测量、布局和绘制。
13 0
|
10天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的高校后勤网上报修系统安卓app附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的高校后勤网上报修系统安卓app附带文章源码部署视频讲解等
8 0
|
18天前
|
Java API Android开发
技术经验分享:Android源码笔记——Camera系统架构
技术经验分享:Android源码笔记——Camera系统架构
21 0