一,安卓aosp源码编译环境搭建

2023-09-16 15:32:43

系列文章目录

第一章 安卓aosp源码编译环境搭建
第二章 手机硬件参数介绍和校验算法
第三章 修改安卓aosp代码更改硬件参数
第四章 编译定制rom并刷机实现硬改(一)
第五章 编译定制rom并刷机实现硬改(二)
第六章 不root不magisk不xposed lsposed frida原生修改定位
第七章 安卓手机环境检测软件分享
第八章 硬改之设备画像
第九章 修改Art虚拟机对指定app的指定函数进行拦截(一)
第十章 修改Art虚拟机对指定app的指定函数进行拦截(二)


前言

傻瓜式操作, 人人都能编译操作系统, 每个感兴趣的人都可以基于谷歌安卓aosp源码定制自己的系统

一、物理机还是真机?

在这里插入图片描述

真机

作者测试后没用任何区别,真机优点是编译速度快10%,真机推荐戴尔G15520。满足ubuntu官方认证机型不会出现黑屏,键鼠触摸板不好用等问题,3060显卡还能玩3A大作,以后还可以搭建GPU环境玩人工智能深度学习,具体知识的笔记本型号可以查看这个列表http://ubuntu.com/certified/laptops

虚拟机

虚拟机优点是拷贝方便,编译速度也不慢,英特尔的CPU是有对虚拟机优化的指令。虚拟机推荐vmware16,分配CPU:6核+12线程,内存>12G,磁盘空间>300G,操作系统选择:ubuntu20.04(千万别选22.04,全是坑),不要用kali版本,kali在后面会有各种问题,kali擅长渗透,并且是当成一次性工具使用的那种。

二、安卓源码版本与机型

推荐安卓源代码版本:andriod-8.1.0_r1

理由是省磁盘空间,且支持机型较多:piexl2、piexl、piexl C、nexus 6P、nexus 5X

最新的安卓13代码有100G,手机推荐二手Pixel或者Pixel 3,性价比高,Nexus太老了可以埋了。

三、编译环境搭建

ubunt安装

安装ubunt过程很简单,大约用时20分钟
在这里插入图片描述
U版图安装好之后需要做以下修改

1.关闭系统休眠

设置-电源-节电-息屏设置为从不

2.增加交换分区

编译需要较大的内存

sudo swapoft -a
sudo fallocate -| 16G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

设置后输入free -h 查看是否生效
在这里插入图片描述

3.更换下载源

在这里插入图片描述
由于系统默认使用国外下载源,下载速度很慢,需手动更换至国内下载源,推荐腾讯

4.安装常用软件

sudo apt-get update
sudo apt-get install git net-tools
sudo apt install -y p7zip-full vim #解压软件
sudo apt install -y open-vm-tools open-vm-tools-dkms #虚拟机工具
sudo aptinstall-y meld #文件对比工具
sudo apt-get install vsftpd # ftp工具(非必须)

5.安装java和python

sudo apt-get install openjdk-8-jdk 

openjdk支持: aosp8 aosp9
openjdk11支持: aosp10-13

sudo apt-get install -y python2
rm -rf /usr/bin/python
ln -s /usr/bin/python2 /usr/bin/python

6.安装编译所需的依赖库

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

7.安装安卓平台工具

下载安装platform-tools并添加到环境https://developer.android.com/tools/releases/platform-tools

sudo vim ~/.bashrc
export PATH=/home/ggg/aosp/platform-tools:$PATH
sudo source ~/.bashrc

8.拷贝安卓代码

解压 aosp810r1.7z
安卓8.1的源码解压后有30G+70万个文件

不要从谷歌或者镜像服务器下载了,那会等到海枯石烂, 直接把下载好的源码压缩包U盘复制进去就行了

9.下载手机的驱动包

因需要下载对应手机的驱动包,具体提取驱动方法请自行百度,各机型的方法都有,本文就不一一阐述

谷歌手机的驱动从这里下载:https://developers.google.com/android/drivers?hl=zh-cn
非开源厂商的手机例如小米、一加等,可以从cm下载或者从厂家rom中提取。
cm下载地址:http://download.lineageos.org/changes

到这一步环境配置的已经差不多了

输入以下命令检查环境是否已经配置完成

free -h
echo $SHELL
java -version
python -v
cd /home/ggg/aosp/pixel &&source build /envsetup.sh
lunch aosp_sailfish-user
make

全部通过,那么恭喜你

四、视频教程

更多推荐

【UML】详解UML类图

目录1.概述2.权限3.关系3.1.连线关系3.2.依赖3.3.泛化(继承)3.4.实现3.5.关联3.6.聚合3.7.组合1.概述UML是什么?书面化一点的说法是:UML(UnifiedModelingLanguage),统一建模语言,是一种用于软件工程和系统设计的标准图形化建模语言。它旨在帮助开发人员、设计师和分析

8年经验之谈 —— App测试常用的两种工具

一、监控工具DDMS的全称是DalvikDebugMonitorService,是Android开发环境中的Dalvik虚拟机调试监控服务。提供测试设备截屏、查看特定进程正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、模拟接收及发送SMS、虚拟地理坐标等服务。启动DDMSEclipse中启动方法:1

Java 泛型

一、泛型简介Java泛型(generics)是JDK5中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。下面给一个Java泛型的简单例子:publicstatic<E>voidprintArray(E[]in

【产品运营】如何提升B端产品竞争力(下)

“好产品不是能力内核,做好产品的流程才是”一、建立需求池和需求反馈渠道需求池管理是B端产品进化最重要的环节,它的重要性远超产品设计、开发等其他环节。维护需求池有主动和被动两种。主动维护是产品经理在参与售前、迭代、交付、售后、竞品分析、老板沟通等活动时自己发掘、记录需求,主动收集需求的渠道很多,但不同渠道收集到的需求质量

两届 TOKEN 2049 之间,孙宇晨和波场的布局与野心

2022年在新加坡举办的TOKEN2049大会上,波场TRON创始人、火币全球顾问委员会成员孙宇晨作为特邀嘉宾出席,并曾提出“波场TRON下一步的发展目标是成为主流金融机构”的生态愿景,揭示了波场生态的全新发展方向,以及孙宇晨作为区块链和加密技术的长期布道者,对加密行业未来发展趋势的展望。时隔一年,2023TOKEN2

Java版分布式微服务云开发架构 Spring Cloud+Spring Boot+Mybatis 电子招标采购系统功能清单

项目说明随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及审计监督要求;通过电子化平台提高招投标工作的公开性和透明性;通过电子化招投标,使得招标采购的质量更高、速度

Typescript中的逆变与协变

许多不是很熟悉TS的朋友对于逆变和协变的概念会感到莫名的恐惧,没关系。它们仅仅代表阐述表现的概念而已,放心我们并不会从概念入手而是通过实例来逐步为你揭开它的面纱。逆变(函数入参)首先,我们先来思考这样一个场景:leta!:{a:string;b:number};letb!:{a:string};b=a我们都清楚TS属于

时序数据库 TimescaleDB 安装与使用

TimescaleDB是一个时间序列数据库,建立在PostgreSQL之上。然而,不仅如此,它还是时间序列的关系数据库。使用TimescaleDB的开发人员将受益于专门构建的时间序列数据库以及经典的关系数据库(PostgreSQL),所有这些都具有完整的SQL支持。本文介绍TimescaleDB的CentOS7环境源码

关于RISC-V安全性的全面综述

目录摘要引言RISC-V安全综述通用平台的安全要求信任的根源与硬件安全模块OTP管理模块安全内存对称加密(如AES)引擎不对称加密[131](例如,公钥RSA)引擎HASH/HAMC引擎随机数/位生成(例如TRNG[136])引擎TrustedBootServicesRISC-V体系结构安全性的构建块RISC-V体系结

RISC-V Reader 笔记(六)RV32V

RV32V早期并行数据计算:采用SIMD单指令多数据,把一个64位宽寄存器拆成若干个32168位长度部分并行计算。这种方法前期看起来十分简单诱人。但是后来如果要扩展SIMD寄存器宽度,也要复杂化指令集,复杂开销越来越大。向量操作:把数据取出来放入长长的向量寄存器中,流水线并行运算后从向量寄存器中分别取回到内存。并且,时

构建高性能应用:Java与MongoDB的完美融合

AI绘画关于SD,MJ,GPT,SDXL百科全书面试题分享点我直达2023Python面试题2023最新面试合集链接2023大厂面试题PDF面试题PDF版本java、python面试题项目实战:AI文本OCR识别最佳实践AIGamma一键生成PPT工具直达链接玩转cloudStudio在线编码神器玩转GPUAI绘画、A

热文推荐