当前位置: 首页 > news >正文

【Android】系统源码下载及编译

源码及编译

步骤 1:创建一个空目录来存放源码:

mkdir aosp
cd aosp

步骤 2:获取最新版本的 repo 并签出 android-8.1.0_r1 分支:

repo init -u https://android.googlesource.com/platform/manifest -b android-8.1.0_r1

其中,android-8.1.0_r1 代表源码标记,代表我们将要获取 Android 8.1 的源码,如需查看其他版本的源码标记,可参阅 源代码标记和 build。

步骤 3:将 Android 源码从默认清单中指定的代码库下载到本地工作目录:

repo sync

步骤 4:创建本地分支并关联 repo 上的所有仓库:

repo start ycx-dev --all	

步骤 5:使用 envsetup.sh 脚本初始化编译环境:

source ./build/envsetup.sh

步骤 6:选择编译目标:

lunch aosp_arm64-eng

编译目标的格式说明:编译目标的格式是 BUILD-BUILDTYPE ,如 aosp_arm64-eng 这个目标,它的 BUILD 是 aosp_arm64,BUILDTYPE 是 eng 。

BUILD 指的是特定功能的组合的特定名称,即表示编译出的镜像可以运行在什么环境,例如 aosp_arm64-eng 中的 aosp(Android Open Source Project) 代表 Android 开源项目,arm 表示系统是运行在 arm 架构的处理器上的,arm64 则是指 64 位 arm 架构处理器

想查看 Android 设备的 cpu 架构,可以执行命令:adb shell getprop ro.product.cpu.abi

BUILDTYPE 指的是编译类型,通常有三种:

  • user:表示编译出的系统镜像版本可以用来正式发布到市场,这个版本是不能 root 的
  • userdebug:在 user 版本的基础上开放了 root 权限和 debug 权限
  • eng:表示开发工程师版本,拥有 root 权限,此外还附带了许多 debug 工具

如果我们在终端输入 lunch 命令,将会列出所有的编译目标:

在这里插入图片描述

步骤 7:开始编译(设置8个线程同时编译):

m -j8

参与编译的线程并不是越多越好,通常是根据你机器 cup 的核心来确定,公式为:core * 2,即当前 cpu 的核心的 2 倍

我们可以执行 cat /proc/cpuinfo| grep "cpu cores"| uniq 命令查看电脑 cpu 的核心数。

编译问题

错误 1:flex-2.5.39: loadlocale.c:130:_nl_intern_locale_data

在这里插入图片描述

解决方法:在终端输入命令:export LC_ALL=C,然后重新编译即可。

错误 2:xmllint: command not found

解决方法:在终端输入命令:sudo apt-get install libxml2-utils,然后重新编译即可。

编译单模块并运行

例如,我们修改了 SystemUI 模块的代码,需要编译到机器上运行看看效果,那么可以这样,

步骤 1:在当前源码目录下执行编译命令:

make SystemUI

稍等片刻,就可以看见编译成功了:

在这里插入图片描述

步骤 2:获得系统写入权限:

adb root && adb remount

步骤 3:接下来把编译产物 push 到设备上即可:

adb push out/target/product/xxx/product/priv-app/SystemUI /system/product/priv-app/

步骤 4:重启设备上层:

adb shell stop && adb shell start

重启完毕后即可看到修改后的效果了。

相关文章:

【Android】系统源码下载及编译

源码及编译 步骤 1:创建一个空目录来存放源码: mkdir aosp cd aosp步骤 2:获取最新版本的 repo 并签出 android-8.1.0_r1 分支: repo init -u https://android.googlesource.com/platform/manifest -b android-8.1.0_r1其中&am…...

基于HTML实现浪漫情人节表白代码(附源代码)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…...

PCL 平面拟合——RANSAC

文章目录 一、基本思想二、代码示例1、参数选择2、核心代码3、完整代码4、结果展示三、关于 RANSAC 的一些思考参考文献一、基本思想 随机抽样一致性算法RANSAC(Random sample consensus)是一种迭代的方法,从一系列包含有离群值的数据中计算数学模型参数的方法。RANSAC算法本…...

【Linux之Shell脚本实战】监控系统的磁盘空间使用率

【Linux之Shell脚本实战】监控系统的磁盘空间使用率 一、脚本要求二、检查本地系统环境1.检查系统版本2.检查系统内核版本三、编写disk.sh脚本1.创建脚本目录2.编写disk.sh脚本3.执行测试脚本四、查看脚本执行日志文件五、本次实践总结1.脚本定时执行2.实践总结一、脚本要求 1.…...

【Python安全编程】Python实现网络主机和端口扫描

文章目录前言环境准备Python实现主机扫描基于ARP协议基于ICMP协议普通版本多线程版本Python实现端口扫描扫描单个端口利用多线程扫描端口后记前言 本文主要讲几个利用Python实现网络扫描的小例子,可以结合多线程或多进程编程改进实例 我曾经走过多遥远的路 跨越过多…...

四大垃圾回收算法七大垃圾回收器

JVM的运行时内存也叫做JVM堆,从GC的角度可以将JVM分为新生代、老年代和永久代。其中新生代默认占1/3堆内存空间,老年代默认占2/3堆内存空间,永久代占非常少的对内存空间。新生代又分为Eden区、SurvivorFrom区和SurvivorTo区, Eden…...

P1217 [USACO1.5]回文质数 Prime Palindromes

[USACO1.5]回文质数 Prime Palindromes 题目描述 因为 151151151 既是一个质数又是一个回文数&#xff08;从左到右和从右到左是看一样的&#xff09;&#xff0c;所以 151151151 是回文质数。 写一个程序来找出范围 [a,b](5≤a<b≤100,000,000)[a,b] (5 \le a < b \l…...

用大白话给你科普,到底什么是 API(应用程序编程接口)?

何为API&#xff1f;如果你在百度百科上搜索&#xff0c;你会得到如下结果&#xff1a;API&#xff08;Application Programming Interface&#xff0c;应用程序编程接口&#xff09;是一些预先定义的函数&#xff0c;目的是提供应用程序与开发人员基于某软件或硬件得以访问一组…...

企业电子招采系统源码——信息数智化招采系统

​ 信息数智化招采系统 服务框架&#xff1a;Spring Cloud、Spring Boot2、Mybatis、OAuth2、Security 前端架构&#xff1a;VUE、Uniapp、Layui、Bootstrap、H5、CSS3 涉及技术&#xff1a;Eureka、Config、Zuul、OAuth2、Security、OSS、Turbine、Zipkin、Feign、Monitor、…...

【vnc】Ubuntu20.04+vnc安装和配置(中文输入法)

Ubuntu20.04vnc安装和配置(中文输入法) 安装vnc 用以下apt 命令安装&#xff1a; sudo apt install tigervnc-common tigervnc-standalone-server tigervnc-viewer tigervnc-xorg-extension注意&#xff0c;要用standalone-server版本&#xff0c;不要下载Tiger官方安装包&a…...

【排序算法】数据结构排序详解

前言&#xff1a; 今天我们将讲解我们数据结构初阶的最后一部分知识的学习&#xff0c;也是最为“炸裂”的知识---------排序算法的讲解&#xff01;&#xff01;&#xff01;&#xff01; 目录1.排序的概念及其运用1.1排序的概念1.2排序运用2.常见排序算法的实现2.1 插入排序2…...

【docker知识】DockerFile语法 1:注释指令、解释器指令

一、说明 在docker的指令下工作&#xff0c;似乎很简单&#xff0c;然而&#xff0c;对于复杂工程&#xff0c;这些初级知识是不够的。正确使用DockerFile构建镜像是必须的技能。我们这里假定您已经熟练docker的指令&#xff0c;我们继续上升一个台阶&#xff0c;如何用build和…...

[失业前端恶补算法]JavaScript leetcode刷题top100(一)

专栏声明&#xff1a;只求用最简单的&#xff0c;容易理解的方法通过&#xff0c;不求优化&#xff0c;不喜勿喷 今天更新五个 easy 难度题目&#xff1a; 两数之和 题面 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的…...

HTTP协议

目录 一、HTTP协议 1.http 2.url url的组成&#xff1a; url的保留字符&#xff1a; 3.http协议格式​编辑 ①http request ②http response 4.对request做出响应 5.GET与POST方法 ①GET ②POST 7.HTTP常见Header ①Content-Type:: 数据类型(text/html等)在上文…...

javafx学习教程

1.舞台&#xff0c;场景&#xff0c;布局&#xff0c;控件&#xff0c;回调 2.舞台&#xff1a;窗口&#xff0c;一个舞台一个窗口&#xff0c;舞台有舞台基础属性&#xff0c;舞台监听事件&#xff0c;做一些回调 3.fxml里面可以写 页面的布局&#xff0c;控件&#xff0c;然…...

百度百科创建词条教程合集分享,赶紧收藏起来

每一个企业、品牌、人物、产品想要提升自己的知名度&#xff0c;都要创建一个属于自己的百度百科词条&#xff0c;互联网时代&#xff0c;百度搜索引擎的地位是不可撼动的&#xff0c;每天都有上亿的用户在百度上搜索相关内容&#xff0c;百度百科词条在网络营销中占据着举足轻…...

镜像恒流源电路分析

在改进型差动放大器中&#xff0c;用恒流源取代射极电阻RE&#xff0c;既为差动放大电路设置了合适的静态工作电流&#xff0c;又大大增强了共模负反馈作用&#xff0c;使电路具有了更强的抑制共模信号的能力&#xff0c;且不需要很高的电源电压&#xff0c;所以&#xff0c;恒…...

奥威软件宏昊化工启动BI项目,打造智能制造标杆

近日&#xff0c;中国纺织行业领先企业宏昊化工有限公司成功启动了与奥威签订的BI项目&#xff0c;期望通过BI的建立进一步提升企业数字化经营能力和核心竞争力。 奥威bi数据分析软件 在全球经济形势不明朗&#xff0c;国内外市场竞争加剧叠加疫情反复的情况下&#xff0c;化工…...

GitHub访问问题与FastGithub下载及使用(详细篇)

前言 &#x1f4dc; “ 作者 久绊A ” 专注记录自己所整理的Java、web、sql等&#xff0c;IT技术干货、学习经验、面试资料、刷题记录&#xff0c;以及遇到的问题和解决方案&#xff0c;记录自己成长的点滴 目录 前言 FastGithub的介绍 FastGithub的下载 FastGithub的安装及…...

这个打上实时补丁的Linux内核,大家可以看一下

前言最近看到一个关于实时Linux内核的开源项目&#xff0c;是一个比较牛逼的公司发起的&#xff0c;想推荐给大家。Linux的实时性一直是被很多开发者诟病的&#xff0c;一个分时系统怎么能在工业领域发挥自己的长处呢&#xff0c;我认为研究Linux的实时性是非常有必要的&#x…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型

在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重&#xff0c;适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解&#xff0c;并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...

【51单片机】4. 模块化编程与LCD1602Debug

1. 什么是模块化编程 传统编程会将所有函数放在main.c中&#xff0c;如果使用的模块多&#xff0c;一个文件内会有很多代码&#xff0c;不利于组织和管理 模块化编程则是将各个模块的代码放在不同的.c文件里&#xff0c;在.h文件里提供外部可调用函数声明&#xff0c;其他.c文…...

电脑桌面太单调,用Python写一个桌面小宠物应用。

下面是一个使用Python创建的简单桌面小宠物应用。这个小宠物会在桌面上游荡&#xff0c;可以响应鼠标点击&#xff0c;并且有简单的动画效果。 import tkinter as tk import random import time from PIL import Image, ImageTk import os import sysclass DesktopPet:def __i…...

嵌入式面试常问问题

以下内容面向嵌入式/系统方向的初学者与面试备考者,全面梳理了以下几大板块,并在每个板块末尾列出常见的面试问答思路,帮助你既能夯实基础,又能应对面试挑战。 一、TCP/IP 协议 1.1 TCP/IP 五层模型概述 链路层(Link Layer) 包括网卡驱动、以太网、Wi‑Fi、PPP 等。负责…...