ubuntu20.4编译AOSP安卓源码(AndroidP android-9.0.0_r9)

2023-11-12

目录

代码下载

安装初始化依赖工具

配置repo工具

配置git信息 

初始化仓库

配置编译环境

安装jdk

安装编译依赖

 编译

初始化编译环境

 选择编译目标

 编译源码

启动模拟器

windows和Linux协同工作

遇到的问题解决 

 安装依赖冲突解决

编译时找不到libncurses.so.5库

 启动模拟器失败

附:

ubuntu20.4LTS下载地址

AOSP国内镜像地址

后续使用hyper-V遇到的问题

清华大学ubuntu镜像源报错

repo init 报错

引用:



代码下载

安装初始化依赖工具

sudo apt-get install curl python git

配置repo工具

mkdir ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

 repo的运行过程中会尝试访问google官方的git源更新自己,需要翻墙,可通过修改repo默认源,通过国内镜像源更新,具体操作为:在~/.bashrc文件里添加如下两行,保存退出,然后执行source ~/.bashrc更新环境变量

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

配置git信息 

    邮箱和姓名可以用真实的,也可以随便编一个

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

初始化仓库

mkdir AOSP
cd AOSP
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest

     初始化完成后,目录下会有一个隐藏文件夹.repo, 切换 到.repo/manifests目录,执行 git branch -a 可以看到所有分支,目前最新的版本已经到android-r-preview-4(androidR)了,再次执行

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b  +分支名便可以下载对应安卓版本的源码,本文使用的P版本,如果下载最新版本代码可忽略,不过Q(10.0)版本之后编译工具和编译步骤可能会有差异,加上--depth=1 --platform=auto参数可以大幅度增加下载速度

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-9.0.0_r9 --depth=1 --platform=auto

执行repo sync -c -j4下载代码,-c参数只下载当前分支, -j4启用4个线程下载,网上都说清华大学源服务器做了限制,最多只能4个线程,多了也没用,万一下载失败为了方便看失败原因,可以把同步日志保存到文件,更新失败的话可以查看sync.log

repo sync -c -j4 2>&1 | tee sync.log

repo init时加上--depth=1 参数,下载的代码每个git仓只包含一个commit信息,repo sync时加上-c参数,只下载当前分支相关的代码,二者结合起来,可以大大缩小整个工程的代码,我下载android-9.0.0_r9分支,只有50G,如果按照清华大学AOSP镜像源的方法,光是下载.repo压缩文件都需要接近78G,repo sync同步出代码将超过150G,commit信息和其它分支其实都是我们不需要的,浪费了很多硬盘资源


配置编译环境

在下载代码的同时,我们可以重新开一个终端,开始配置编译环境

安装jdk

sudo apt-get install openjdk-8-jdk

安装编译依赖

如果遇到问题看后面问题解决

sudo apt-get install -y libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install -y tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install -y dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install -y git-core gnupg zip curl zlib1g-dev gcc-multilib
sudo apt-get install -y libc6-dev-i386 x11proto-core-dev libx11-dev
sudo apt-get install -y unzip m4 lib32z-dev ccache libssl-dev
sudo apt-get install -y lib32ncurses5-dev

 编译

初始化编译环境

source build/envsetup.sh

 选择编译目标

我选择的是aosp_arm64-eng,根据自己需求选择

lunch aosp_arm64-eng

 编译源码

-j后面的参数表示使用多少个线程编译,根据自己计算机cpu支持线程数来设定,可在设备管理器->处理器查看,下面有几个就是支持几个线程,我这边使用12个线程编译了1个多小时;如果编译失败可以查看buildlog

make -j12 2>&1 | tee build.log

接下便是漫长的等待 

启动模拟器

如果中途关闭了终端,需要重新执行source build/envsetup.sh 和lunch命令才能启动模拟器

$ emulator

windows和Linux协同工作

如果你的电脑装了代码编辑软件,不想在Linux上再装一套,又用不惯vim这类编辑软件,可以尝试将文件共享到windows上,在windows上编辑,在linux上调试,具体见ubuntu20.4安装samba

遇到的问题解决 

 安装依赖冲突解决

如果安装libesd0-dev时报错 ,可在/etc/apt/sources.list  中文件尾加入deb http://us.archive.ubuntu.com/ubuntu/ xenial main universe,然后执行sudo apt-get update更新,重新安装便能成功

 

若安装过程中提示有冲突,多半是apt源有问题,版本不对,这个我也是现在才发现,网上好多博客的国内apt源都没有标明ubuntu版本,复制过来版本对不上的话安装软件时经常报冲突,建议去个镜像源找对应版本的apt源,如清华大学镜像源,或者先将能安装的装上,然后把源换为自带的源列表

对于桌面版,直接在源列表列表选择一个合适的,我使用的aliyun,速度也挺快的,或者点选择最佳服务器自动选择一个

编译时找不到libncurses.so.5库

编译时报错:error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory,我这边直接sudo apt-get install libncurses* 暴力解决

如果依赖报错,将apt源换回ubuntu官网默认源

sudo apt-get install libncurses* 

 启动模拟器失败

emulator: ERROR: x86_64 emulation currently requires hardware acceleration!

warning的报警无关紧要,导致起不来的是ERROR的打印,在网上搜了一下没找到解决办法,都是讲Android Studio启动模拟器失败的,看到一篇文章中说需要BIOS中打开硬件虚拟化,但是我windows上的模拟器和VM虚拟机都能正常使用,说明是开了的,无意间看到VM虚拟机里处理器有个虚拟化引擎的东西,抱着试一试的心态,勾选了虚拟化Intel VT-x/EPT和AMD-V/RVI(V)选项,启动虚拟机,source build/envsetup.sh 和lunch命令,就能正常启动了,接下来就可以修改你的安卓源码,开启安卓之旅了 

编译AOSP源码,安卓模拟器启动失败  


附:

ubuntu20.4LTS下载地址

http://releases.ubuntu.com/20.04/ubuntu-20.04-desktop-amd64.iso 桌面版

http://releases.ubuntu.com/20.04/ubuntu-20.04-live-server-amd64.iso 服务器版

其他版本详见 http://releases.ubuntu.com/20.04/

AOSP国内镜像地址

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest 清华AOSP镜像源
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest 中国科学技术大学AOSP镜像源

后续使用hyper-V遇到的问题

    第一次使用的是VM虚拟机,后续尝试使用Hyper-V虚拟机遇到了一些其他问题

清华大学ubuntu镜像源报错

    使用清华大学ubuntu镜像源时,update报错,无法正常安装软件包,后来使用了阿里巴巴镜像源就没问题了

repo init 报错

fatal: 无法访问 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/':server certificate verification failed. CAfile: none CRLfile: none
repo: error: "git" failed with exit status 128
  cwd: /home/xxx/workstation/AOSP/android-6.0.1_r59/.repo/repo
  cmd: ['git', 'fetch', '--quiet', '--progress', 'origin', '+refs/heads/*:refs/remotes/origin/*', '+refs/tags/*:refs/tags/*']
fatal: cloning the git-repo repository failed, will remove '.repo/repo

解决办法:

git config --global http.sslverify false
git config --global https.sslverify false

引用:

在ubuntu20.04下配置android P源码编译环境_m0_46702738的博客-CSDN博客_ubuntu20 编译android

AOSP | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ubuntu20.4编译AOSP安卓源码(AndroidP android-9.0.0_r9) 的相关文章

随机推荐

  • STM32实战项目系列教程 (一)—— 循迹小车

    前言 以往我们看到很多学习单片机知识的教程往往是从单片机内部资源出发 这样的教程原理往往晦涩难懂 初学者很难系统的学习开发单片机的项目 而本次教程是从项目出发教你学习循迹小车的制作 整个项目采用 STM32 单片机作为控制器来实现 所以在学
  • 【vue2】el-table 从接口获取数据改变了,但是页面却没有正常渲染

    方法一 在el table上面添加一个 key 属性 指定一个唯一的值 然后数据改变后 我们更新这个唯一值 这样 Vue 会自动重新渲染该组件 1 获取随机uuid 创建在uuid js文件当中 获取唯一id export function
  • 7月15日---7月21日(计划50小时,实际12小时,还有5258小时)

    本周单位事情应该不算多 没事就在家看看文挡 切忌浮躁 一颗平常心 就当学东西了 业余爱好 就按照DDRAW 软引擎 OSG引擎 自制3D引擎去走 上午PHYSX 中午DDRAW引擎 下午加入GAMEDEMO程序 晚上文挡 周六日文档 擦 最
  • 哪个进程在访问这个恶意域名???

    哪个进程在访问这个恶意域名 背景 信息安全工程师很多时候需要通过某个恶意域名来判断主机失陷情况 恶意域名特征比较明显的 比较容易通过威胁情报找到相关线索 例如fr minexmr com 通过威胁情查询 该恶意域名比较容易判断该主机感染Wa
  • 数据双向绑定

    一 什么是双向绑定 我们先从单向绑定切入单向绑定非常简单 就是把Model绑定到View 当我们用JavaScript代码更新Model时 View就会自动更新双向绑定就很容易联想到了 在单向绑定的基础上 用户更新了View Model的数
  • cocos cretor shader effect-the book of shader-4.二维矩阵

    2D Matrices 二维矩阵 前面章节 TheBookofShader开始 Shaping functions 造型函数 Color 颜色 Shapes 形状 平移 之前的章节我们学习了如何制作一些图形 而如何移动它们的技巧则是借助移动
  • 【设计模式】Chain of Responsibility 责任链式模式

    一 前言 责任链行为模式是行为模式的一种 行为模式涉及到算法和对象间职责的分配 行为模式不仅描述对象或类的模式 还描述它们之间的通信模式 行为模式分为 Template Method 模板方法 和 Interpreter 解析器行为模式 模
  • linux下安装mysql(rpm)方式安装

    前言 在linux中使用rpm安装包安装5以上版本的mysql的都可以参考这个 1 首先下载rpm安装包 要下载两个安装包一个client 一个server 有个镜像做的不错 下载地址mirrors sohu com mysql 进入后找到
  • 虚拟机centos7搭建k8s

    虚拟机centos7搭建k8s 1 踩坑大全 centos7安装的docker后 默认非root用户无法使用 所以需要创建docker组 把当前普通用户加入到组中 这里参考链接 设置docker非root用户正常使用 在给docker配置镜
  • Error creating bean with name ‘sqlSessionFactory‘ 、MySQL启动报错

    今天学习SpringSecurity的时候 选用了springboot 因为公司用的不是boot 所以 boot一直不是很熟悉 在此连接数据库的时候 遇到了一个bug Error creating bean with name sqlSes
  • UR机器人:位姿表示以及相关移动

    博主最近在做强化相关的任务 用到了UR5机械臂 所以本文主要讲述在使用过程中 对于UR机器人位姿的理解 在阅读本文之前 希望大家能够花一点时间读一下我的另一篇博文空间信息与坐标变换 本文如有错误的地方 欢迎大家指正 欢迎讨论 机座和工具 首
  • 麦科捷联合 Mellanox 加速eXtremeDB 集群性能

    2016年7月20日McObject 作为分布式数据库管理系统eXtremeDB 中集群功能的开发者 联合端对端以太网和无限宽带互联方案和服务领先供应商的Mellanox 共同宣布一个基准测试结果 该测试通过集成Mellanox的信息加速器
  • Node-RED配置

    配置文件 可通过配置文件配置Node RED 配置文件在哪 Node RED启动时 会在Node RED用户目录下寻找setting js文件 node red Windows中为系统盘 Users 当前用户 node red 若找不到 将
  • Vue3下pinia的状态管理原理和具体使用示例

    一 Pinia是什么 Pinia在Composition API的设计背景下 以Vuex下一代的构想设计了新的Vue存储状态管理库 Pinia 是一个基于 Vue 3 的状态管理库 它提供了一个可组合的 类型安全的 API 来管理 Vue
  • SpringMVC学习指南(2)

    文章目录 系列文章目录 前言 一 RequestMapping注解 1 1 value属性 1 2 method属性 1 3 params属性 1 4 header属性 1 5 通配符 二 PathVariable 注解 三 REST风格的
  • 安装64位SoildWorks时总是出现无法确定当前的订阅失效日期

    总共会出现两个弹窗信息 弹窗1 安装管理程序无法确定当前的的订阅失效日期 您想重新激活您的许可以更新信息吗 这个弹窗要点击 否 弹窗2 无法决定订阅服务失效日期 您必须使用 这个点击 确定 转载于 https www cnblogs com
  • matlab画对数坐标!

    在很多工程问题中 通过对数据进行对数转换可以更清晰地看出数据的某些特征 在对数坐标系中描绘数据点的曲线 可以直接地表现对数转换 对数转换有双对数坐标转换和单轴对数坐标转换两种 用loglog函数可以实现双对数坐标转换 用semilogx和s
  • 专访《白话区块链》作者蒋勇:学习区块链空谈不如实践

    上周HiBlock区块链社区联合蒋勇老师推出课程 区块链技术概念及智能合约实践 课程上线一天内报名42人 3天时间报名80多人 其中70人通过审核 超额完成第一期招生 为保证学员学习效果 不得已提前关闭报名通道 近几天来 很多学员还在留言问
  • 用C++实现数组切片

    这里写自定义目录标题 用C 实现数组切片 写的一般 权当抛砖引玉了 int slice int arr const int n int a new int n for
  • ubuntu20.4编译AOSP安卓源码(AndroidP android-9.0.0_r9)

    目录 代码下载 安装初始化依赖工具 配置repo工具 配置git信息 初始化仓库 配置编译环境 安装jdk 安装编译依赖 编译 初始化编译环境 选择编译目标 编译源码 启动模拟器 windows和Linux协同工作 遇到的问题解决 安装依赖