Android AOSP源码编译——AOSP整编(二)
切换到源码目录下执行下面命令
1、初始化环境
. build/envsetup.sh
//清除缓存
make clobber
2、选择编译目标
lunch
AOSP 预制了很多 Product。这里为了简单我们先不用真机,而是选择模拟器的方式,对于 x86_64 模拟器,我们选择的是 aosp_x86_64-eng。
lunch命令回车后会让你选择编译目标,我们选31(aosp_x86_64-eng)
maoweiyi@maoweiyi-OMEN-by-HP-Laptop-15-dc0xxx:~/aosp$ lunchYou're building on LinuxLunch menu... pick a combo:1. aosp_arm-eng2. aosp_arm64-eng3. aosp_barbet-userdebug4. aosp_blueline-userdebug5. aosp_blueline_car-userdebug6. aosp_bonito-userdebug7. aosp_bonito_car-userdebug8. aosp_bramble-userdebug9. aosp_car_arm-userdebug10. aosp_car_arm64-userdebug11. aosp_car_x86-userdebug12. aosp_car_x86_64-userdebug13. aosp_cf_arm64_auto-userdebug14. aosp_cf_arm64_phone-userdebug15. aosp_cf_x86_64_phone-userdebug16. aosp_cf_x86_auto-userdebug17. aosp_cf_x86_phone-userdebug18. aosp_cf_x86_tv-userdebug19. aosp_coral-userdebug20. aosp_coral_car-userdebug21. aosp_crosshatch-userdebug22. aosp_crosshatch_car-userdebug23. aosp_flame-userdebug24. aosp_flame_car-userdebug25. aosp_redfin-userdebug26. aosp_sargo-userdebug27. aosp_sunfish-userdebug28. aosp_trout_arm64-userdebug29. aosp_trout_x86-userdebug30. aosp_x86-eng31. aosp_x86_64-eng32. arm_krait-eng33. arm_v7_v8-eng34. armv8-eng35. armv8_kryo385-eng36. beagle_x15-userdebug37. beagle_x15_auto-userdebug38. car_x86_64-userdebug39. db845c-userdebug40. fuchsia_arm64-eng41. fuchsia_x86_64-eng42. hikey-userdebug43. hikey64_only-userdebug44. hikey960-userdebug45. hikey960_tv-userdebug46. hikey_tv-userdebug47. pixel3_mainline-userdebug48. poplar-eng49. poplar-user50. poplar-userdebug51. qemu_trusty_arm64-userdebug52. silvermont-eng53. uml-userdebug54. yukawa-userdebug55. yukawa_sei510-userdebugWhich would you like? [aosp_arm-eng] 31
3、编译
选择好编译目标,通过下面命令进行编译
//通过-jN 参数来设置编译的并行任务数,提高编译速度
make -j4
2000 years later~
看到build completed successfully就代表我们构建成功了。
接下来运行模拟器
运行模拟器
emulator
因为我们是刚编译, 执行过envsetup脚本和lunch,否则需要先执行这两条命令
. build/envsetup.sh
lunch 31
emulator
备注:在启动模拟器的时候遇到了磁盘空间不足,我看了下整个AOSP文件夹占用了我200多G,其中隐藏文件.repo占用了50G,考虑了下因为是学习后期不使用repo
sync同步更新代码,所以就给删除了。

到这里我们的模拟器就成功运行起来了
4、修改代码运行
最后我们尝试下修改我们的Activity.java,重新编译看看有没有生效。可以通过find -name "Activity.java"命令找到我们的Activity.java

找到后给Activity.java的onCreate加一行日志打印。
修改后保存,重新编译
. build/envsetup.sh
lunch 31
make -j4
编译成功再次运行模拟器
. build/envsetup.sh
lunch 31
emulator
打开终端 通过adb shell 和 logcat 命令查看日志
adb shell 的配置可自行百度。
点击模拟器中几个app后日志结果日下
可以看到我们修改的代码确实生效了。
相关文章:
Android AOSP源码编译——AOSP整编(二)
切换到源码目录下执行下面命令 1、初始化环境 . build/envsetup.sh //清除缓存 make clobber2、选择编译目标 lunchAOSP 预制了很多 Product。这里为了简单我们先不用真机,而是选择模拟器的方式,对于 x86_64 模拟器,我们选择的是 aosp_x86…...
铁是地球科学争论的核心
一项新的研究调查了地球内部铁的形态。这些发现对理解内核的结构产生了影响。 一项新的研究探索了地球内核的铁结构,如图中的黄色和白色所示。 资料来源:地球物理研究快报 地球内核以铁为主,铁可以多种晶体形式作为固体材料存在。(…...
TX Text Control .NET Server for ASP.NET Crack
TX Text Control .NET Server for ASP.NET Crack TX Text Control.NET Server for ASP.NET是用于Web应用程序或服务的服务器端组件。它是一个完全可编程的ASP.NET文字处理引擎,提供了广泛的文字处理功能。使用TX Text Control.NET Server,程序员可以开发…...
工作纪实36-ES跨集群迁移
1.es数据备份、恢复 https://blog.csdn.net/andy_only/article/details/111319175 2.reindex命令 https://codeleading.com/article/40964498185/ 添加配置、重启ES cd bin sh elasticsearch -d3.开源工具 https://github.com/elasticsearch-dump/elasticsearch-dump 4.…...
【MFC】11.MFC文档和单文档架构-笔记
MFC文档 之前我们在写字符雨的时候,将数据都存储到了视图类中,这是不合理的,视图类只负责显示,不应该存储任何数据 文档:专门存储数据用的 CDocument 文档与视图的关系: 创建一个文档类 单文档四个类都…...
2023年“研究生科研素养提升”系列公益讲座在线测评题目与参考答案
一、单选题 1、关于参考文献的选择,说法错误的是 ( ) 参考文献的选择有原创性、必要性的原则 不能过度引用 不能故意隐藏引用来源 可以引用无关参考文献 您的答案:D 参考答案:D 答案解析:不可以引用无关参考…...
MySQL8.xx一主两从复制安装与配置
搭建环境: 查看系统版本cat /etc/redhat-release [rootwww tools]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) 查看内核版本cat /proc/version 目标: 一主两从 主机IP 主机名称 端口 搭建环境 安装目录192.168.1.100 docker…...
深度学习优化器
1、什么是优化器 优化器用来寻找模型的最优解。 2、常见优化器 2.1. 批量梯度下降法BGD(Batch Gradient Descent) 2.1.1、BGD表示 BGD 采用整个训练集的数据来计算 cost function 对参数的梯度: 假设要学习训练的模型参数为W,代价函数为J(W),…...
由浅入深C系列五:使用libcurl进行基于http get/post模式的C语言交互应用开发
使用libcurl进行基于http get/post模式的C语言交互应用开发 简介环境准备在线资源示例代码测试调用运行结果 简介 大多数在linux下的开发者,都会用到curl这个命令行工具。对于进行restful api的测试等,非常方便。其实,这个工具还提供了一个C…...
高效实用小工具之Everything
一,简介 有时候我们电脑文件较多时,想快速找到某个文件不是一件容易的事情,实用windows自带的搜素太耗时,效率不高。今天推荐一个用来搜索电脑文件的小工具——Everything,本文将介绍如何安装以及使用everything&…...
【Unity每日一记】关于物体(敌方)检测—(向量点乘相关)
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:uni…...
Elasticsearch-查询
一、查询和过滤 1.1 相关性分数 :_score 默认情况下,Elasticsearch 按相关性得分对匹配的搜索结果进行排序,相关性得分衡量每个文档与查询的匹配程度。 相关性分数是一个正浮点数,在搜索的数据字段中返回。_score越高࿰…...
首发 | FOSS分布式全闪对象存储系统白皮书
一、 产品概述 1. 当前存储的挑战 随着云计算、物联网、5G、大数据、人工智能等新技术的飞速发展,数据呈现爆发式增长,预计到2025年中国数据量将增长到48.6ZB,超过80%为非结构化数据。 同时,数字经济正在成为我国经济发展的新…...
Java反射获取所有Controller和RestController类的方法
Java反射获取所有Controller和RestController类的方法 引入三方反射工具Reflections <dependency><groupId>org.reflections</groupId><artifactId>reflections</artifactId><version>0.10.2</version> </dependency>利用反…...
设计模式--策略模式
目录 一.场景 1.1场景 2.2 何时使用 2.3个人理解 二. 业务场景练习 2.1业务: 2.2具体实现 2.3思路 三.总结 3.1策略模式的特点: 3.2策略模式优点 3.3策略模式缺点 一.场景 1.1场景 许多相关的类仅仅是行为有异,也就是说业务代码需要根据场景不…...
VSCode使用SSH无密码连接Ubuntu
VSCode使用SSH无密码连接Ubuntu 前提条件: 1. 能够正常使用vscode的Remote-ssh连接Ubuntu 2. Ubuntu配置静态ip(否则经常需要修改Remote-ssh的配置文件里的IP) 1. windows下 打开Win下的PowerShell,生成公钥和私钥 ssh-keygen…...
通过版本号控制强制刷新浏览器或清空浏览器缓存
背景介绍 在我们做 web 项目时,经常会遇到一个问题就是,需要 通知业务人员(系统用户)刷新浏览器或者清空浏览器 cookie 缓存的情况。 而对于用户而言,很多人一方面不懂如何操作,另一方面由于执行力问题&am…...
Redis系列(二):深入解读Redis的两种持久化方式
博客地址:blog.zysicyj.top Redis为什么要引入持久化机制 Redis引入持久化机制是为了解决内存数据库的数据安全性和可靠性问题。虽然内存数据库具有高速读写的优势,但由于数据存储在内存中,一旦服务器停止或崩溃,所有数据将会丢失…...
CNN之图像识别
文章目录 1. 图像识别1.1 模式识别1.2 图像识别的过程1.3 图像识别的应用 2. 深度学习发展2.1 深度学习为何崛起2.2 分类与检测2.3 常见的卷积神经网络 3. VGG3.1 VGG163.2 VGG16的结构:3.3 使用卷积层代替全连接3.4 1*1卷积的作用3.5 VGG16代码示例 4. 残差模型-Re…...
nvcc not found
检查cuda 安装成功 nvidia-smiCommand ‘nvcc’ not found, apt install nvidia-cuda-toolkitnvcc fatal : No input files specified; use option --help for more information # 注意是大写 V nvcc -V export PATH"/usr/local/cuda/bin:$PATH" expor…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...
CppCon 2015 学习:Time Programming Fundamentals
Civil Time 公历时间 特点: 共 6 个字段: Year(年)Month(月)Day(日)Hour(小时)Minute(分钟)Second(秒) 表示…...
用鸿蒙HarmonyOS5实现国际象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的国际象棋小游戏的完整实现代码,使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├── …...
