FrameWork基础案例解析(四)
文章目录
- 单独拉取framework
- 开机与开机动画横屏
- Android.mk语法
- 单独编译SDK
- make 忽略warning
- 单独修改和编译Camera2
- 单独编译Launcher3
- Android Studio 导入、修改、编译Settings
- 导入
- Android Studio 导入、修改、编译Launcher3
- android 开机默认进入指定Launcher
- 植入自己的apk到系统当中
- 内置第三方输入法
- Settings USB 调试默认打开
- git代码管理
- 快速修改系统app
- 替换启动开机画
- 打包服务应用Car
- 模块打包到镜像中
- 预装带so的apk
- 搜集命令
单独拉取framework
repo sync platform/frameworks/base
开机与开机动画横屏
https://cczheng.blog.csdn.net/article/details/107951773
Android.mk语法
https://www.jianshu.com/p/703ef39dff3f
单独编译SDK
https://blog.csdn.net/starhosea/article/details/78663285
make sdk -j12 'ANDROID_COMPILE_WITH_JACK:=false'

make 忽略warning
在Makefile编译命令后面:
添加 -w(小写) 可以忽略warning;
添加 -Werror 可以将warning当作error,出现warning时停止编译;
添加 -Wall 可以输出所有
单独修改和编译Camera2
先找到包名
maqi@ubuntu:~/data/android-11.0.0_r9$ adb shell dumpsys window | grep mCurrentFocusmCurrentFocus=Window{dc54f28 u0 com.android.camera2/com.android.camera.CameraLauncher}
targetActivity 找到 CameraActivity
<activity-aliasandroid:name="com.android.camera.CameraLauncher"android:label="@string/app_name"android:targetActivity="com.android.camera.CameraActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity-alias>
加入一个标志
<com.android.camera.ui.MainActivityLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/activity_root_view"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@null"><include layout="@layout/camera" /><include layout="@layout/camera_filmstrip" /><com.android.camera.ui.ModeTransitionViewandroid:id="@+id/mode_transition_view"android:visibility="gone"android:layout_width="match_parent"android:layout_height="match_parent" /><TextViewandroid:id="@+id/txtOne"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="MAQI666"android:textColor="#EA5246"android:textStyle="bold|italic"android:background="#000000"android:textSize="18sp" /></com.android.camera.ui.MainActivityLayout>
编译成功
cd packages/apps/Camera2
mm -j12
* Connection #0 to host localhost left intact
[100% 10/10] Install: out/target/product/angler/data/app/Camera2Tests/Camera2Tests.apk
make: Leaving directory '/home/maqi/data/android-11.0.0_r9'
#### make completed successfully (05:40 (mm:ss)) ####
查看输出
maqi@ubuntu:~/data/android-11.0.0_r9/out/target/product/angler/system/app$ ls -l Camer*
total 5768
-rw-rw-r-- 1 maqi maqi 5894746 Nov 23 17:51 Camera2.apk
drwxrwxr-x 3 maqi maqi 4096 Nov 17 16:42 lib
drwxrwxr-x 3 maqi maqi 4096 Nov 17 16:45 oat
烧入&&重启
adb push Camera2.apk /system/app/Camera2/adb shell am restart
效果图

单独编译Launcher3
单独编译Launcher3
ninja: error: ‘out/host/linux-x86/framework/host-libprotobuf-java-nano.jar’, needed by
cd /package/apps/Launcher3
mma -j12
Android Studio 导入、修改、编译Settings
https://blog.csdn.net/qq_45815991/article/details/130278276
mm -j8 WITH_DEXPREOPT=false

make SettingsLib -j12 'ANDROID_COMPILE_WITH_JACK:=false'
https://note.qidong.name/2017/07/06/disable-jack-when-make-android/

导入
先学一下Git控制指令,玩转repo
repo sync packages/apps/Settings
Resolving deltas: 100% (33776/33776)
Resolving deltas: 100% (33776/33776), completed with 494 local objects.
Fetching: 0% (0/1) 12:43 | 1 job | 12:43 platform/packages/apps/Settings @ packages/apps/SettingsFetching: 100% (1/1), done in 16m4.670s
Updating files: 100% (3143/3143), done.
Checking out: 100% (1/1), done in 16.036s
repo sync has finished successfully.
方式二
maqi@ubuntu:~/data/source/.repo/manifests$ vim default.xml

git clone git://mirrors.ustc.edu.cn/aosp/platform/packages/apps/Settings
Android Studio 导入、修改、编译Launcher3
https://blog.csdn.net/u012932409/article/details/128772883
android 开机默认进入指定Launcher
https://blog.csdn.net/mj475002864/article/details/104759067
植入自己的apk到系统当中
https://blog.csdn.net/byhook/article/details/51900277
内置第三方输入法
https://www.jianshu.com/p/e782897c6ab8
Settings USB 调试默认打开
git代码管理
https://blog.csdn.net/qq_20330595/article/details/134042749?spm=1001.2014.3001.5502
快速修改系统app
https://blog.csdn.net/qq_20330595/article/details/146269135?spm=1001.2014.3001.5502
替换启动开机画
https://blog.csdn.net/qq_20330595/article/details/140856458
nanopc -t4 官方替换教程
打包服务应用Car
nothing…
模块打包到镜像中
make snod
预装带so的apk
预装带so的apk
搜集命令
| 模块 | make命令 | mmm 命令 |
|---|---|---|
| init | make init | mmm system/core/init |
| zygot | make app_process | mmm frameworks/base/cmds/app_process |
| system_server | make services | mmm frameworks/base/services |
| java framwork | make framework | mmm frameworks/base |
| framework res | make framework-res | mmm frameworks/base/core/res |
| framework jni | make libandroid_runtime | mmm frameworks/base/core_jni |
| binder | make libbinder | mmm frameworks/base/libs/binder |
相关文章:
FrameWork基础案例解析(四)
文章目录 单独拉取framework开机与开机动画横屏Android.mk语法单独编译SDKmake 忽略warning单独修改和编译Camera2单独编译Launcher3Android Studio 导入、修改、编译Settings导入 Android Studio 导入、修改、编译Launcher3android 开机默认进入指定Launcher植入自己的apk到系…...
嵌入式电量与功耗优化:从理论到实战
目录 一、为什么功耗是个大问题? 电池寿命的命门 效率决定竞争力 运营成本的隐形杀手 环保不是空话 二、功耗从哪来?硬件软件一个都跑不了 硬件:功耗的物理根源 处理器:耗电主力军 存储器:偷偷摸摸的耗电鬼 电源管理单元(PMU):幕后功臣也有损耗 时钟系统:滴…...
通过 C# 提取PDF文档中的图片
当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,避免每次都要从 PDF 中查找。本文将介绍如何使用C#通过代码从PDF文档中提取图片ÿ…...
国标GB28181视频监控平台EasyCVR保驾护航休闲娱乐“九小场所”安全运营
凭借降低人力资源、节约物资成本的优势,在多个场景得到广泛应用。如今,棋牌室、洗浴中心、酒店这类人员频繁流动和密集的场所,已成为安全管理的重点。 尽管部分棋牌室已安装了监控设备,但是设备功能单一,只能实现一…...
GoLand 2024.3 中文 GO语言开发工具
GoLand 2024.3 中文 GO语言开发工具 文章目录 GoLand 2024.3 中文 GO语言开发工具一、介绍二、效果三、下载 一、介绍 JetBrains GoLand 2024 ,是一款GO语言开发工具,全行代码补全:能使用本地运行的上下文感知深度学习模型,可以自…...
HTML 音频(Audio)学习笔记
一、HTML 音频概述 在 HTML 中,音频可以通过多种方式播放,但要确保音频在不同浏览器和设备上都能正常播放,需要掌握一些技巧。HTML5 引入了 <audio> 元素,为音频播放提供了一种标准方法,但在 HTML4 中ÿ…...
去中心化交易所(DEX)
核心概念与DEX类型 DEX vs CEX 中心化交易所(CEX)风险:资产托管风险(如2019年超2.9亿美元被盗)、隐私泄露(如50万用户信息泄漏)。 DEX优势:用户自持资产(非托管&#x…...
CentOS 7 强制升级Docker 24.x终极指南(解决MySQL8镜像兼容性问题)
CentOS 7 强制升级Docker 24.x终极指南(解决MySQL8镜像兼容性问题) 旧版本: 新版本docker: 一、问题背景与方案选型 1.1 典型报错分析 The designated data directory /var/lib/mysql/ is unusable根本原因:旧版…...
【区块链安全 | 第十九篇】类型之映射类型
文章目录 映射类型可迭代映射 映射类型 映射类型使用语法 mapping(KeyType KeyName? > ValueType ValueName?),映射类型的变量声明使用语法 mapping(KeyType KeyName? > ValueType ValueName?) VariableName。 KeyType 可以是任何内置值类型、bytes、st…...
Flask与 FastAPI 对比:哪个更适合你的 Web 开发?
在开发 Web 应用时,Python 中有许多流行的 Web 框架可以选择,其中 Flask 和 FastAPI 是两款广受欢迎的框架。它们各有特色,适用于不同的应用场景。本文将从多个角度对比这两个框架,帮助你更好地选择适合的框架来构建你的 Web 应用…...
QT 中的元对象系统(五):QMetaObject::invokeMethod的使用和实现原理
目录 1.简介 2.原理概述 3.实现分析 3.1.通过方法名调用方法的实现分析 3.2.通过可调用对象调用方法的实现分析 4.使用场景 5.总结 1.简介 QMetaObject::invokeMethod 是 Qt 框架中的一个静态方法,用于在运行时调用对象的成员函数。这个方法提供了一种动态调…...
Linux进程管理与进程间通信
一、进程基础知识 1. 进程的定义与特性 **定义**:进程是程序的一次执行过程,是系统资源分配的基本单位 **特性**: - 动态性:进程是程序的动态执行过程 - 并发性:多个进程可以并发执行 - 独立性:进…...
【无人机】无人机PX4飞控系统高级软件架构
目录 1、概述(图解) 一、数据存储层(Storage) 二、外部通信层(External Connectivity) 三、核心通信枢纽(Message Bus) 四、硬件驱动层(Drivers) 五、飞…...
启动arthas-boot.jar端口占用
问题 [rootlocalhost arthas-4.0.4]# java -jar arthas-boot.jar [ERROR] The telnet port 3658 is used by process 7066 instead of target process 6155, you will connect to an unexpected process. [ERROR] 1. Try to restart arthas-boot, select process 7066, shutdow…...
JSVMP逆向实战:原理分析与破解思路详解
引言 在当今Web安全领域,JavaScript虚拟机保护(JSVMP)技术被广泛应用于前端代码的保护和反爬机制中。作为前端逆向工程师,掌握JSVMP逆向技术已成为必备技能。本文将深入剖析JSVMP的工作原理,并分享实用的逆向破解思路…...
【SPP】蓝牙链路控制(LC)在SPP中互操作性深度解析
在蓝牙协议栈的精密分层体系中,其链路控制(Link Control, LC)层作为基带层的核心组件,承载着物理信道管理、连接建立与维护等关键任务。其互操作性要求直接决定了不同厂商设备能否实现无缝通信。本文将以蓝牙技术规范中的LC互操作…...
单片机学习之定时器
定时器是用来定时的机器,是存在于STM32单片机中的一个外设。STM32一般总共有8个定时器,分别是2个高级定时器(TIM1、TIM8),4个通用定时器(TIM2、TIM3、TIM4、TIM5)和2个基本定时器(TI…...
供应链管理:计算题 / 倒扣法
一、理解倒扣法 在供应链管理中,倒扣法是一种常用的成本计算方法,主要用于确定商品的成本和销售价格,以确保特定的毛利率。倒扣法的基本原理是在已知售价和期望毛利率的情况下,逆推计算出供货价或成本价。 二、倒扣法的计算公式…...
算法每日一练 (25)
💢欢迎来到张翊尘的技术站 💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 算法每日一练 (25)四数之和题目描述解题思路解题代码c…...
【大模型基础_毛玉仁】6.4 生成增强
目录 6.4 生成增强6.4.1 何时增强1)外部观测法2)内部观测法 6.4.2 何处增强6.4.3 多次增强6.4.4 降本增效1)去除冗余文本2)复用计算结果 6.4 生成增强 检索器得到相关信息后,将其传递给大语言模型以期增强模型的生成能…...
Zephyr实时操作系统初步介绍
一、概述 Zephyr是由Linux基金会托管的开源实时操作系统(RTOS),专为资源受限的物联网设备设计。其核心特性包括模块化架构、跨平台兼容性、安全性优先以及丰富的连接协议支持。基于Apache 2.0协议,Zephyr允许商业和非商业用途的自…...
【GCC警告报错4】warning: format not a string literal and no format arguments
文章主本文根据笔者个人工作/学习经验整理而成,如有错误请留言。 文章为付费内容,已加入原创保护,禁止私自转载。 文章发布于:《C语言编译报错&警告合集》 如图所示: 原因: snprintf的函数原型&#x…...
【落羽的落羽 C++】模板简介
文章目录 一、模板的引入二、函数模板1. 函数模板的使用2. 函数模板的原理3. 函数模板的实例化4. 函数模板的匹配 三、类模板 一、模板的引入 假如我们想写一个Swap函数,针对每一种类型,都要函数重载写一次,但它们的实现原理是几乎一样的。在…...
USB(通用串行总线)数据传输机制和包结构简介
目录 1. USB的物理连接电缆结构时钟恢复技术 2. USB的数据传输方式包(Packet) 3. 包的传输规则帧和微帧 4. 包的结构1. 同步字段(Sync)2. 包标识符字段(PID)3. 数据字段4. 循环冗余校验字段(CRC…...
【目标检测】【深度学习】【Pytorch版本】YOLOV3模型算法详解
【目标检测】【深度学习】【Pytorch版本】YOLOV3模型算法详解 文章目录 【目标检测】【深度学习】【Pytorch版本】YOLOV3模型算法详解前言YOLOV3的模型结构YOLOV3模型的基本执行流程YOLOV3模型的网络参数 YOLOV3的核心思想前向传播阶段反向传播阶段 总结 前言 YOLOV3是由华盛顿…...
【前端扫盲】postman介绍及使用
Postman 是一款专为 API 开发与测试设计的 全流程协作工具,程序员可通过它高效完成接口调试、自动化测试、文档管理等工作。以下是针对程序员的核心功能介绍和应用场景说明: 一、核心功能亮点 接口请求构建与调试 支持所有 HTTP 方法(GET/POS…...
每日c/c++题 备战蓝桥杯(全排列问题)
题目描述 按照字典序输出自然数 1 到 n 所有不重复的排列,即 n 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。 输入格式 一个整数 n。 输出格式 由 1∼n 组成的所有不重复的数字序列,每行一个序列。 每个数字保留 5 个场…...
IdeaVim-AceJump
AceJump 是一款专为IntelliJ IDEA平台打造的开源插件,旨在通过简单的快捷键操作帮助用户快速跳转到编辑器中的任何符号位置,如变量名、方法调用或特定的字符串。无论是大型项目还是日常编程,AceJump 都能显著提升你的代码导航速度和效率。…...
BMS电池关键参数及其含义
BMS概述 BMS的定义与功能 BMS,即电池管理系统,是电池系统的核心控制设备,充当着电池的“状态观测器”。它通过传感器采集电池的单体电压、温度、电流等关键参数,并利用电子控制单元(ECU)进行数据处理和分…...
DataFrame行索引操作以及重置索引
一.DataFrame行索引操作 1.1 获取数据 1.1.1 loc 选取数据 df.loc[ ] 只能使用标签索引,不能使用整数索引。 当通过标签索引的切片方式来筛选数据时,它的取值前闭后闭。 传参: 1.如果选择单行或单列,返回的数据类型为 Series…...
