一,安卓aosp源码编译环境搭建
系列文章目录
第一章 安卓aosp源码编译环境搭建
第二章 手机硬件参数介绍和校验算法
第三章 修改安卓aosp代码更改硬件参数
第四章 编译定制rom并刷机实现硬改(一)
第五章 编译定制rom并刷机实现硬改(二)
第六章 不root不magisk不xposed lsposed frida原生修改定位
第七章 安卓手机环境检测软件分享
第八章 硬改之设备画像
第九章 修改Art虚拟机对指定app的指定函数进行拦截(一)
第十章 修改Art虚拟机对指定app的指定函数进行拦截(二)
文章目录
- 系列文章目录
- 前言
- 一、物理机还是真机?
- 二、安卓源码版本与机型
- 三、编译环境搭建
- ubunt安装
- 1.关闭系统休眠
- 2.增加交换分区
- 3.更换下载源
- 4.安装常用软件
- 5.安装java和python
- 6.安装编译所需的依赖库
- 7.安装安卓平台工具
- 8.拷贝安卓代码
- 9.下载手机的驱动包
- 四、视频教程
前言
傻瓜式操作, 人人都能编译操作系统, 每个感兴趣的人都可以基于谷歌安卓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
全部通过,那么恭喜你
四、视频教程
相关文章:

一,安卓aosp源码编译环境搭建
系列文章目录 第一章 安卓aosp源码编译环境搭建 第二章 手机硬件参数介绍和校验算法 第三章 修改安卓aosp代码更改硬件参数 第四章 编译定制rom并刷机实现硬改(一) 第五章 编译定制rom并刷机实现硬改(二) 第六章 不root不magisk不xposed lsposed frida原生修改定位 第七章 安卓…...

video 视频编解码一些debug方法
文章目录 一、通过命令去获取一些数据1.2 确定我们xml配置文件: 二、查看我们芯片支持的编码能力三、通过log去获取信息 这个文章的主要内容是为了后期性能方面的debug, 设计到前期的bringup则没有 一、通过命令去获取一些数据 获取媒体相关的参数: # getprop |…...

中秋国庆假期——模板推荐
要说最近能让人开心的事情是什么?大概就是下周将迎来8天假,小编帮大家数了数还有11天,就要放中秋国庆的假期了。作为一个资深打工人,本周的日常即将变成:上班想放假、下班想放假、想放假… 但是宝子们要注意,大家在盼…...

【配代码演示】Cookie和Session的区别
一、共同之处: cookie和session都是用来跟踪浏览器用户身份的会话方式。 二、工作原理: 1.Cookie的工作原理 (1)浏览器端第一次发送请求到服务器端 (2)服务器端创建Cookie,该Cookie中包含用户的…...

【Linux初阶】信号入门2 | 信号阻塞、捕捉、保存
文章目录 ☀️前言☀️一、信号阻塞🌻1.信号其他相关常见概念🌻2.信号在内核中的表示 ☀️二、信号捕捉(重点)🌻1.用户态 & 内核态🌻2.如何判断进程处于用户态或内核态🌻3.OS接口的访问方法…...

【已解决】:该该虚拟机似乎正在使用中。如果该虚拟机未在使用,请按“获取所有权(T)“按钮获取它的所有权。否则,请按“取消(C)“按钮以防损坏。
现象 启动VMware虚拟机,无法正常打开并出现以下信息: 原因 这是因为当运行一个“虚拟系统”时,为防止该系统被另外一个VMware程序打开,导致数据被修改或损坏,VMware会自动在该“虚拟系统”所在的文件夹下,…...
系统架构常用的工具
HBase HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样ÿ…...

腾讯云2核4G服务器5M带宽 218元一年 优惠价格明细表
腾讯云2核4G服务器5M带宽可以选择轻量应用服务器或云服务器ECS,轻量2核4G5M带宽服务器218元一年: 腾讯云2核4G服务器5M带宽收费 腾讯云2核4G服务器可以选择轻量应用服务器或者ECS云服务器,云服务器ECS是专业级云服务器,大多数使用…...

[C++ 网络协议] 多播与广播
目录 1. 多播 1.1 多播的使用情形 1.2 多播的原理 1.3 如何实现多播 1.4 多播的代码实现 2. 广播 2.1 广播与多播的区别 2.2 广播的分类 2.3 实现广播 1. 多播 1.1 多播的使用情形 考虑一种情形,你要向10000名用户发送数据,此时如果用TCP提供服…...

IOS17正式版今日发布
北京时间9月19日凌晨,苹果公司正式向全球用户推送了期待已久的iOS 17正式版。此次更新为iPhone带来了多项激动人心的功能,包括对“电话”、“信息”、FaceTime通话的重大更新,“待机显示”以及音乐、小组件、Safari浏览器的升级等。 据了解&…...
2560. 打家劫舍 IV
沿街有一排连续的房屋。每间房屋内都藏有一定的现金。现在有一位小偷计划从这些房屋中窃取现金。 由于相邻的房屋装有相互连通的防盗系统,所以小偷 不会窃取相邻的房屋 。 小偷的 窃取能力 定义为他在窃取过程中能从单间房屋中窃取的 最大金额 。 给你一个整数数…...
java web中部署log4j.xml
标题:Java Web中部署log4j.xml 目录: 1. 介绍 2. 配置log4j.xml文件 3. 配置web.xml文件 4. 配置Spring框架 5. 配置Spring Bean 6. 总结 ## 1. 介绍 在Java Web开发中,日志记录是非常重要的一部分。log4j是一个常用的Java日志记录框架&am…...

【张兔兔送书第一期:考研必备书单】
考研书单必备 《数据结构与算法分析》《计算机网络:自顶向下方法》《现代操作系统》《深入理解计算机系统》《概率论基础教程(原书第10版》《线性代数(原书第10版)》《线性代数及其应用》赠书活动 八九月的朋友圈刮起了一股晒通知…...

基于Spring Boot+ Vue的健身房管理系统与实现
小熊学Java全能学面试指南:https://javaxiaobear.cn 摘要 随着健身行业的快速发展,健身房管理系统成为了提高管理效率和用户体验的重要工具。本论文旨在设计与实现一种基于前后端分离的健身房管理系统,通过前后端分离的架构模式,…...

ThreadLocal线程局部变量
1.原理 ThreadLocal是用来保存当前线程数据的,每一个线程的内部都有一个ThreadLocalMap,当前这个map中存储了以当前ThreadLocal作键,具体的数据作值的一个个Entry对象。 为什么非得以ThreadLocal对象作键呢?因为一个线程可能使用了…...

C++ Primer (第五版)第一章习题部分答案
在我自学C过程中,我选择了CPrimer这本书,并对部分代码习题进行了求解以及运行结果。接下来几个月我将为大家定时按章节更新习题答案与运行结果: 目录 1.9编写程序,使用while循环将50到100的整数相加 1.10 除了运算符将运算对象的值增加1之外,还有一个…...
Python与GUI集成:零基础也能开发国际象棋游戏
引言: 国际象棋,作为世界上最受欢迎的棋类游戏之一,拥有丰富的策略和深度。但是,你知道自己可以使用Python来创建一个简单的国际象棋游戏并为其添加图形用户界面(GUI)吗?在本教程中,…...

SaaS软件能保证数据安全吗?
SaaS软件能保证数据安全吗? 本文将要尝试从各个方面尽可能客观的去阐述这个问题,而不是简单自嗨式的说简道云平台如何保障数据安全。 建议先收藏起来慢慢品! 01 SaaS安全到底是什么?——定义解读 本文所用SaaS平台>>>…...

方案:基于AI烟火识别与视频技术的秸秆焚烧智能化监控预警方案
一、方案背景 为严控秸秆露天焚烧,改善环境空气质量,各省相继发布秸秆禁烧工作内容。以安徽省为例,大气污染防治联席会议下发了该省2020年秸秆禁烧工作部署通知。2020年起,气象局将对全省秸秆焚烧火点实施卫星全年全时段监测&…...

phantomjs插件---实现通过链接生成网页截图
Phantomjs | PhantomJS 配置要求 windows下,安装完成phantomJS 设置phantomjs环境变量【也可直接使用phantomjs目录下的执行文件】 直接通过访问php文件执行/通过cmd命令行执行【phantomjs phantom_script.js】 linux下,安装完成phantomJS 设置phantomjs环境变量 直…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...

《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...

ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...