Vane's Blog

libusb线程竞争导致的crash案例分析

背景 USB camera压测模式切换时导致libusb crash。 分析traces文件 08-04 16:49:43.081 29652 29652 I crash_dump32: performing dump of process 29543 (target tid = 29611) 08-04 16:49:43.100 29652 29652 F DEBUG : ***...

RK3399 Android系统插入UVC Camera导致系统开机失败

背景 某些板厂的RK3399 android7.1系统在插入我们的深度UVC Camera设备后,再次开机android系统启动失败,一直停留在开机动画界面。 分析开机logcat --------- beginning of crash 01-18 09:05:33.565 248 248 F libc : Fatal signal 6 (SIGABRT), code ...

ANR案例分析

背景 UVC camera压测冷启动时,在关闭camera时导致ANR。 分析traces文件 ----- pid 2821 at 1970-02-21 07:37:10 ----- Cmd line: com.angzv.camera ... "main" prio=5 tid=1 Native | group="main" sCount=1 dsCount=0 obj=0x73...

Android 10无法申请UVC摄像头权限的问题分析

如果需要打开USB设备,如USB摄像头,需要在打开设备前先动态请求USB设备访问权限,如下是USB请求权限流程图 该流程图来自:https://www.cnblogs.com/xiaoxiaing/p/12213750.html 当调用申请权限的API:UsbManager.java的requestPermission()方法时,如果是首次访问该USB设备(插拔USB设备或Andro...

进程与线程

虽然每个进程都有自己的虚拟地址空间,但是为了进一步保障系统运行安全,虚拟地址空间被划分为用户空间和内核空间。操作系统运行在内核空间,用户程序运行在用户空间。内核空间有所有进程的地址空间共享,但是用户程序不能直接访问内核空间。 操作系统保存的进程控制信息自然是在内核空间。这里除了页目录以外还可以找到很多重要的内容,例如进程和父进程ID、状态和打开文件句柄表等等。 线程就是进程中的执行体...

Android Native内存泄漏案例

项目中遇到一个内存泄漏的情形:usb camera预览时出现了内存泄漏,但内存泄漏很小,测试一晚上泄漏20M内存左右。因此借此机会学习下当前市面上用于Android检测内存泄漏的工具。 以下内容是搬运字节旗下的西瓜团队的文章: 西瓜视频稳定性治理体系建设二:Raphael 原理及实践 背景 Android 平台上的内存问题一直是性能优化和稳定性治理的焦点和痛点,Java 堆内存因为有...

HTTP基础

1. HTTP到底是什么 两种最直观的印象 浏览器地址栏输入地址,打开网页 Android中发送网络请求,返回对于内容 HTTP定义:Hypertext Transfer Protocol,超文本传输协议,和 HTML (Hypertext Markup Language 超文本标记语言) 一起诞生,用于在网络上请求和传输 HTML 内容。 超文本,即「扩展型文本」,指的...

深入理解Android相机体系结构(非原创)

1. 概述 Android系统自2007年底被Google推出问世以来,已经走过13个春夏秋冬,历经多次的大大小小的迭代重构、架构调整,虽然时代年轮依旧滚滚,虽然每年技术依然在不断地推陈出新,但是到目前为止,依然可以窥见其接口与实现相分离的核心设计理念,所以其架构设计的优越性可见一斑,另外,随着智能手机的快速普及,面对这一庞大终端市场,作为系统中最重要的几个组件之一的相机系统也必定会作为主...

MacBooK pro编译Android 9.0和Android 11源码

当前设备环境 操作系统:macOS Mojave 10.14.6 手机:谷歌手机Pixel Pixel 3 XL 下载源码版本:android-9.0.0_r46 android-11.0.0_r17 创建磁盘映像 由于mac系统文件系统是大小写不敏感的系统,所以需要在mac中创建一个支持大小写敏感的文件系统。 创建分区 安卓9.0编译后比较大,笔者编译...

Activity启动耗时统计方案(非原创)

1. 概述 Activity的启动速度是很多开发者关心的问题,当页面跳转耗时过长时,App 就会给人一种非常笨重的感觉。在遇到某个页面启动过慢的时候,开发的第一直觉一般是 onCreate 执行速度太慢了,然后在 onCreate 方法前后记录下时间戳计算出耗时。不过有时候即使把 onCreate 方法的耗时优化了,效果仍旧不明显。实际上影响到 Activity 启动速度的原因是多方面的,...