Vane's Blog

Android应用、权限与进程模型

摘要 本⽂旨在为 Android 开发者系统性地阐述 Android 平台的应⽤、权限与进程模型。我们将从 PID、UID 等基础概念入手,详细剖析不同类型的应用(用户应用、系统应用、特权应用等)及其在系统中的角色和位置,并深入探讨 Android 的权限分类与授予机制。最后,本文将通过实战工具 adb dumpsys,探讨开发者如何在真实设备上验证这些核心概念。 目录 基础...

Launcher3架构

基于android 13,部分代码涉及到14 15 Core Components Architecture 更详细的launcher架构大图请点击:大图 Launcher3 代码库围绕以下关键组成部分组织: Launcher Activity Launcher 类是主活动类,作为所有其他组件的容器。它处理生命周期事件、状态转换,并协调所...

Android开机启动之FallbackHome和Launcher启动

1.FallbackHome的启动 Android系统起来后,首先启动的Activity并不是launcher,而是FallbackHome,FallbackHome是Settings的一部分。 FallbackHome主要就是因为涉及整个android系统的加密等原因,系统在还没有完全解锁前,不可以启动Launcher,因为Launcher中明显和各个第三方应用耦合较多(比如桌面可...

Android开机动画流程

1.Android开机动画概述 Android开机动画是设备启动过程中用户看到的视觉效果,通常在操作系统加载时播放。它的主要目的是: 用户体验:通过动态的视觉效果,增强用户的期待感,使设备启动过程更加愉悦。 品牌识别:不同的Android设备制造商(如三星、华为、小米等)会设计独特的开机动画,以体现品牌特色。 系统状态指示:开机动画可以让用户知道设备正在启动,避免用户在启动...

Android9/10返回错误VID/PID的问题分析

背景 Android9/10开发板插入绝大多数UVC设备,使用Android的API UsbDevice返回错误的VID/PID。针对该问题,下面深入Android9源码分析该问题。 涉及到的文件如下: frameworks/base/services/usb/java/com/ndroid/server/usb/UsbHostManager.java frameworks...

Android及Linux系统下UVC创建两个video节点的原因及解决方案

背景 在某些采用Linux内核的系统如Android和Ubuntu,插入一个UVC(usb video camera)设备会创建两个video设备节点,如/dev/video0和/dev/video1,但只有一个video设备节点是可以获取camera流数据,另外一个只能查询camera信息而已。针对该问题,手上有firefly RK3399的开发板和Android7.1的源码,下面深入源...

FireFly RK3399 Android8.1系统Camera HAL层内存泄漏问题分析

1. 问题背景 在FireFly RK3399 开发板搭载Android8.1系统,插入UVC设备做开关压力测试,发现压测1万多次后,UVC设备打开失败,log显示申请内存失败。dumpsys meminfo发现Camera HAL层已泄漏2Gb。 2. 问题分析 2.1 dumpsys meminfo初步分析 dumpsys meminfo信息如下: Total PSS by p...

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...