- 博客(90)
- 资源 (5)
- 收藏
- 关注
原创 Android15 Media框架JNI Interface调试
摘要:本文介绍了Android15 Media框架中MediaRecorder的调试方法。重点说明如何开启JNI层的ALOGV日志输出:1)在android_media_MediaRecorder.cpp中定义LOG_NDEBUG0宏;2)编译替换super.img;3)通过adb设置日志级别为V(命令:setprop persist.log.tag.MediaRecorderJNI V)。该方法可永久生效,便于开发调试时查看MediaRecorder的详细日志信息。
2026-03-23 14:17:22
98
原创 Android15借助Linux proc虚拟文件系统调试用户态实现
下面介绍一种Android系统调试方法,借助Linux proc虚拟文件系统将Android用户态的调试数据放到内核态进行显示,用于logcat不可用情况下调试Android系统。主要是介绍Linux Kernel中如何实现这样一个/proc/debugprof节点供用户态访问。
2026-01-27 12:56:16
203
原创 Android15系统中(娱乐框架和车机框架)中对摄像头的朝向是怎么定义的
Camera Service框架中对Camera朝向定义是相对于设备屏幕来说的,和屏幕同侧是前置(Front),屏幕背面是后置(Rear)。ANDROID_LENS_FACING_FRONT, (内置)前置摄像头ANDROID_LENS_FACING_BACK (内置)后置摄像头ANDROID_LENS_FACING_EXTERNAL 外接摄像头。
2026-01-12 16:54:29
857
原创 Android15 EVS HAL中使用Camera HAL Provider接口
EVS HAL和Camera HAL是Android系统中访问相机设备节点的两条路径,理论上是独立的两个HAL层。现在想做一个验证:EVS HAL初始化阶段通过Camera HAL Provider接口设备节点是否可行(理论上是可行的),查询操作的耗时怎样。
2026-01-12 10:17:55
358
原创 下载Android源代码
对于AOSP来说下载Android源代码当然可以按照官方说明来操作,但是实际网络环境的原因从Google站点拉源代码可能会失败。这里介绍环境受限时拉Android15源代码.
2026-01-10 16:13:05
433
原创 Android15 框架层Java代码中的各种打印接口
Android15源代码中ProtoLog定义于frameworks/base/core/java/com/android/internal/protolog/ProtoLog.java,包名为com.android.internal.protoLog//打印接口//使能控制//(单例)对象及初始化。
2026-01-05 16:28:22
316
原创 如何对自己开发的系统级APK进行签名
Android系统应用签名是确保APK完整性和来源可信的关键机制。本文以Camera2.apk为例,详细介绍了系统级APK的签名流程:首先在Android Studio中编译生成APK,然后准备AOSP源代码环境获取签名工具和平台密钥(platform.pk8和platform.x509.pem),最后使用apksigner工具完成签名。文中还强调了签名验证的重要性,提供了安装测试和使用aapt2、apksigner等工具进行验证的方法。整个流程突出了系统应用必须使用平台密钥签名才能获得系统权限的特性。
2026-01-01 22:16:47
495
原创 Android15 Frameworks层(.java)打印函数调用关系
具体点,想在frameworks/base/services/core/java/com/android/server/am/ProcessList.java killPackageProcessesLSP()中打印函数调用关系,可以用如下方法,1.Throwable printStackTrace方法打印调用栈。2.Thread getStackTrace方法打印调用栈。这里介绍Android框架层AM组件中函数调用关系打印。
2025-12-11 14:01:13
264
原创 查看Android设备的版本类型和SELinux策略
3.查看SELinux状态文件 (命令:cat /sys/fs/selinux/enforce)1.查看SELinux状态 (命令:getenforce)Permissive:宽容模式(已启用,记录但不阻止违规)Enforcing: 强制模式(已启用,强制执行策略)1. 查看设置中的版本信息(有些设备可能不显示)设置->系统->关于->版本/构建码 车机。2.查看系统属性(命令:getprop xx)0 表示Permissive(宽容模式)1 表示Enforcing(强制模式)
2025-12-02 17:04:17
1485
原创 camera.provider: type=1400 audit(0.0:10): avc: denied { read } for name=“socinfo“ dev=“sysfs“ ino
首先,需要找到Camera HAL的策略文件(默认在AOSP源码:device/<vendor>/<product>/sepolicy/hal_camera_default.te,可以参考system/sepolicy/vendor/hal_camera_default.te)。然后,根据avc log提示添加对应权限到Camera HAL策略文件。1.adb logcat | grep -E "avc: denied" > avc_denied_log.txt 收集avc信息。
2025-12-02 16:34:38
600
原创 Android15中设置属性值(setprop)
本文介绍了在Android系统中设置属性(setprop)的方法。包括:1.调试过程中临时设置属性值2.镜像打包前设置属性默认值
2025-11-27 18:47:10
513
原创 Android15 HAL层打印函数调用关系
include <execinfo.h> //引用的头文件//获取调用栈,函数指针形式//将函数指针转成字符串i < nptrs;
2025-11-26 10:09:40
291
原创 Bash基础知识-[[和]]用于条件测试
在Bash中,[[和]]是条件测试关键字,[是内置命令。[[和]]提供了比[和](test命令)更强大、更安全的条件测试方式,提供了模式匹配、正则表达式、更清晰的逻辑运算符等强大功能,是编写健壮Shell脚本的首选。[[和]]与[和]的差别。
2025-11-19 18:30:27
411
原创 Bash命令-compgen
compgen是bash的一个内置命令,可以根据输入的选项实现补全功能。-c 列出所有可执行命令(包括别名、函数和外部命令)-a 列出所有Bash别名, 相关:alias。-f 列出当前目录下所有文件(包括目录)-e 列出全局变量,相关:export。-k 列出Bash保留字(关键字)-b 列出所哟与Bash内置命令。-s 列出所有的service。-d 列出当前目录下所有目录。-v 列出所有Bash变量。-j 列出后台执行的作业。-u 列出系统所有的用户。-g 列出系统所有的组。
2025-11-19 16:06:49
188
原创 Android15 CameraService层打印函数调用关系
这里介绍Android15 Camera系统调试用到的跟踪函数调用关系的一些方法:1.框架层调打印函数调用栈
2025-11-03 12:32:47
364
原创 Android15增强型视觉系统(EVS)
EVS专供汽车平台使用,对Android系统服务依赖较小,可提供早期摄像头使用权限。此API仅适用于提供关键汽车摄像头体验(例如后视、环绕视图显示)的系统和第一方(1P)应用。相对于EVS的是Android摄像头服务(适用Android Camera API v2)与摄像头硬件进行交互。Camera2与其他Android服务紧密耦合,并且要求必须在Android完全启动后才能使用摄像头(除了具有特权的客户端以外)。
2025-10-27 16:31:30
1497
3
原创 Linux Screen使用手册
screen是Linux系统中一个非常强大且实用的终端复用工具。它在单个终端窗口(或远程SSH会话)中,可以提供多个独立的“虚拟终端”(称为screen会话),可以随时在其中创建、断开和重新连接。它的核心价值在于:即使你关闭了终端窗口或网络连接断开,在screen会话中运行的进程也不会终止,而是继续在后台执行。之后你可以随时重新连接(reattach)到这个会话,恢复到上次离开时的状态。
2025-10-23 15:40:47
492
原创 FFmpeg常用操作
查看可用的文件格式该命令会列出ffmpeg支持的所有媒体文件格式将FLV格式转成MP4将FLV格式转成MKV,指定视频编码器为h.264音频编码器为flac拷贝输入文件中的流到输出。
2025-10-23 11:19:53
712
原创 FFmpeg介绍、使用说明
FFmpeg是一组用于处理多媒体内容(如音频、视频、字幕及相关元数据)的库和工具。其他小工具如aviocat,ismindex和qt-faststart。
2025-10-22 17:28:06
641
原创 Android Automotive相关术语
AOSP仓库由Google主导,可提供所需信息和源码,以便创建定制Android堆栈版本,将设备和配件移植到Android平台上,还可确保Android设备符合兼容性要求。一种接口,会定义原始设备制造商(OEM)可以实现的属性,并包含属性元数据(例如,属性是否为int以及允许使用哪些更改模式)。一种系统,通过支持安全分发数据并/或禁止非法分发数据,保护通过互联网或其他数字媒体所传播的数据的版权。双方签订的服务合同,旨在使用可衡量的指标(例如性能、可用性、可靠性等)就所提供的服务达成协议。
2025-10-20 10:16:20
797
原创 Android CarService调试操作
见:Android Automotive Service dump(上),(中上),(中下),(下)car service信息包括如下内容。进入"车库模式",完成时进行重启。
2025-10-17 13:57:10
541
原创 AOSP之Android Automotive
Android Automotive本质就是Android平台。十多年来,运营商、原始设备制造商(OEM)和开发者一直在使用Android平台打造优质的设备、应用和体验。现在,Android Automotive将Android的强大功能引入汽车之中,让汽车制造商得以打造满足数字时代需求的强大信息娱乐系统。
2025-10-16 16:02:53
771
原创 多核异构系统中的通信机制介绍
在异构系统中,不同的处理器(如CPU、GPU、DSP、Modem、专用加速器等)需要高效地协同工作,而它们之间的通信机制是性能、功耗和系统复杂度的关键。
2025-10-14 12:23:34
1023
原创 [Android soong构建系统]实例:定制化编译某个模块
3.device仓打包脚本device.mk中设置这个定义变量oo_target为不同的值,高配产品将oo_target设置为oo_high,低配产品将oo_target设置为oo_low。1.Camera HAL Android.bp中自定义一个string类型soong变量,假设变量名为oo_target,取值为:oo_high(高配),oo_low(低配)。4.Camera HAL Android.bp和源码中整合公共部分和差异部分进行编译和打包。2.定义自定义模块类型,根据取值设置模块属性。
2025-10-11 10:35:41
285
原创 #ifdef和#if define区别
#ifdef和#if define是C语言预处理指令中常用的两个预编译指令。Linux Kernel源码中两者都由使用,那么这两个预编译指令该如何区分呢?
2025-09-14 11:59:18
491
原创 dmesg使用说明
本文介绍了Linux内核日志管理工具dmesg的常用命令及参数。主要内容包括:1)清空环形缓存的两种方式;2)设置内核日志级别;3)原始输出和缓冲区大小设置;4)替代方案包括使用head/tail查看部分日志、实时监控和分页显示;5)其他实用参数如-w实时监控、时间戳控制等。特别说明现代Linux内核使用动态缓冲区后,-s参数已失去意义。这些命令为系统管理员提供了灵活的内核日志查看和管理方式。
2025-09-14 00:19:09
321
原创 Linux Kernel Core API:printk
本文介绍了Linux内核中的printk()日志打印机制。printk()是内核的标准日志工具,支持8个优先级级别(0-7),通过比较消息级别和console_loglevel决定是否输出到控制台。文章详细说明了printk()的使用方法、级别设置(可通过/proc/sys/kernel/printk或dmesg命令修改),以及pr_*()系列宏(如pr_info、pr_debug等)的封装使用。还介绍了日志格式定制、动态调试等特性,以及早期启动打印接口early_printk()。这些机制为内核开发和调试
2025-09-13 23:35:31
1273
原创 Linux Kernel Media框架中Pixel Format
其中,RGB, Raw Bayer和YUV Format是相机系统中图像传感器常用的输出格式,RGB和YUV Format也是图像处理中常用的格式,Compressed Format是编解码常用格式。
2025-09-04 11:07:27
1179
原创 ELF 文件实例分析
ELF (Executable and Linkable Format)是一种用于可执行文件、目标文件和共享库的文件格式,广泛应用于Linux系统。接下来从实际工作中涉及的ELF文件的相关信息出发,说明从一个ELF文件中能看到哪些内容。
2025-08-28 15:13:57
608
原创 将Android Studio创建的一个apk工程放到Android15源码中构建
背景描述:起初Android Studio创建的apk工程,为了方便系统版本发布和后期维护需要同时支持两种构建方式:由于Android Studio创建的app工程有固定的文件结构,和Soong构建时文件结构组织会有些差异,所以做两套构建系统的兼容,主要从以下几个方面进行:下面以具体例子来讲解自己是如何实现Androd Studio创建的CameraDemo.apk同时支持:Android Studio创建一个新的工程,工程名为camerademo, 创建完成的工程文件结构如下:2.调整CameraD
2025-07-16 20:40:54
1229
原创 怎么查看Android设备中安装的某个apk包名和启动页activity
android系统开发的时候,有时需要手动拉起一个apk,测试自己的hal层或者框架层修改是不是正常。打开dump_package_0701.txt文件,从如下内容可以看出activity名字是"com.android.camera.CameraActivity"直接介绍操作, 这里以android11版本为例子,假设我们安装的apk:Camera2.apk (通常这个名字我们下载安装的时候能看到)。从这里可以看到Camera2.apk的包名是"com.android.camera2"
2025-07-01 21:20:11
794
原创 C++ Vector的使用(上)
vector是C++ STL中顺序容器中的变长数组,容器的存储空间是自动管理的,按需扩张和收缩。像array一样,vector使用连续的存储空间来存储其元素,这就意味着可以像array那样使用指向其元素的常规指针的偏移量来访问它的元素。不同于array,vector的大小可以动态调整,容器会自动处理它的存储。在内部,vector使用一个动态分配的数组存储它的元素。当新的元素插入时,可能需要重新分配以满足空间大小动态增长的需求, 这意味着分配新的数组并将所有元素移到新数组。
2025-06-30 16:21:24
1192
原创 C/C++零碎基础知识
使用一个指针的时候涉及到两个对象:指针对象本身和被它所指的对象。本篇文章用于记录C/C++一些零散的基础内容。1.指针常量和常量指针。
2025-06-27 10:14:08
305
原创 Android Camera Hal中通过Neon指令优化数据拷贝
Camera apk普通相机模式录像操作时,一般是同时请求两个流,即预览流和录像流。对于两个流输出图像格式和分辨率相同的情况下,是不是可以通过一个流拷贝得到另一个流的数据,进而节省掉一个Sensor输出处理两次的的开销?我们都知道平时使用的memcpy()函数是由cpu来实现处理的,如果图像数据比较大的话是很耗cpu的,那么有没有什么方法能优化下copy操作使cpu占用小些?下面以具体实现,了解如何使用Neon指令实现一帧NV12图像数据的拷贝。这里介绍使用ARM Neon指令集实现输出拷贝的优化。
2025-06-06 09:24:08
434
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅