Android
文章平均质量分 87
InsightAndroid
这个作者很懒,什么都没留下…
展开
-
Android中apk安装过程源码解析
android apk安装流程源码解析原创 2024-08-25 21:48:07 · 2000 阅读 · 0 评论 -
Binder解析精炼
Server进程向binder驱动向Binder驱动发起服务注册请求向Binder驱动申请创建一个XXXService的Binder的实体,Binder驱动为这个XXXService创建位于内核中的Binder实体节点以及Binder的引用Binder驱动将注册请求转发给ServiceManager进程Binder驱动将名字和新建的引用打包传递给SM(实体没有传给SM),通知SM注册一个名叫XXX的Service。原创 2024-07-14 17:26:05 · 639 阅读 · 0 评论 -
BindService详解
我们主要看中下面这段if (s.app!try {s.app!s.app!= null这个条件一般应该都满足。那么是什么时候设置为true的呢?答案就在的时候if (r!= null &&!再来看这个条件。先来看``b.intent.apps.size() == 1这个条件,它的设置在ServiceRecord#retrieveAppBindingLocked`中if (a!return a;原创 2024-07-14 16:58:46 · 1449 阅读 · 0 评论 -
Android指纹录入与解锁源码解析
Android中指纹相关逻辑详解原创 2024-07-14 16:52:21 · 1529 阅读 · 0 评论 -
Android人脸解锁源码解析
Android人脸解锁相关逻辑原创 2024-07-14 16:47:34 · 1014 阅读 · 0 评论 -
Activity启动流程
Activity启动流程详解原创 2024-07-14 16:42:13 · 1403 阅读 · 0 评论 -
Keyguard上滑解锁流程解析
Android T Keyguard上滑解锁流程解析原创 2022-12-11 20:26:13 · 1821 阅读 · 0 评论 -
Hello
原创 2021-11-07 12:49:20 · 242 阅读 · 0 评论 -
android存储系统
Android的存储系统主要由SystemServer进程的MountService和Vold进程的VolumeManager组成。它们管理系统的存储设备,执行各种操作,如mount、unmount、format等。 在Android存储系统中,MountService是为应用提供服务的Binder类,运行在SystemServer中,而StorageManager是MountServer的代理,在用户进程中使用的。Vold是一个守护进程,负责和底层存储系统驱动交互。MountService和原创 2021-03-30 14:27:01 · 645 阅读 · 0 评论 -
Android电源管理分析
Android电源管理1.电源管理服务–PowerManagerService PowerManagerService提供Android系统的电源管理服务,主要功能是控制系统的待机状态,控制显示屏的开关和亮度调节,以及查询和控制光线传感器和距离传感器等。1.1 初始化过程 PowerManagerService是在SystemServer中创建并加入到ServiceManager中的:Slog.i(TAG, "Power Manager");power = new PowerManag原创 2021-03-30 12:27:36 · 1677 阅读 · 1 评论 -
Android应用程序资源管理器(Asset Manager)的创建过程分析
Android应用程序资源管理器(Asset Manager)的创建过程分析 在前面一篇文章中,我们分析了Android应用程序资源的编译和打包过程,最终得到的应用程序资源就与应用程序代码一起打包在一个APK文件中。Android应用程序在运行的过程中,是通过一个称为AssetManager的资源管理器来读取打包在APK文件里面的资源文件的。在本文中,我们就将详细分析Android应用程序资源管理器的创建以及初始化过程,为接下来的一篇文章分析应用程序资源的读取过程打下基础。 从前面Andro原创 2021-03-30 10:52:27 · 561 阅读 · 0 评论 -
Android应用程序启动过程-full_step
Android应用程序启动过程 在Android系统中,应用程序是由Activity组成的,因此,应用程序的启动过程实际上就是应用程序中的默认Activity的启动过程,本文将详细分析应用程序框架层的源代码,了解Android应用程序的启动过程。 在Android系统中,有两种操作会引发Activity的启动,一种用户点击应用程序图标时,Launcher会为我们启动应用程序的主Activity;应用程序的默认Activity启动起来后,它又可以在内部通过调用startActvity接口启动新的A原创 2021-03-26 16:45:31 · 674 阅读 · 0 评论 -
Android MediaPlayer源码分析
Media Player 源码分析目录1.简介2.Media Server3.MediaPlayer 调用流程3.1 构造函数3.2 设置数据源3.2.1 获取 MediaPlayerService 接口3.2.2 获取 MediaPlayer 接口3.2.3 设置数据源3.3 Prepare3.4 start3.5 pause3.6 stop3.7 release4.总结5.参考1.简介MediaPlayer 中大部分的功能使用 C++ 实现,Java原创 2020-12-04 09:38:19 · 849 阅读 · 0 评论 -
编译静态库为动态so库
在从事Android开发的过程中,经常会使用到用c或c++编写的第三方的静态库,比如对接第三方时,对方不希望提供源码,又比如在我们的编译环境下,无法编译某个库。这个时候就可以用静态库来编译成动态库so。之前在网络上看过很多方法,似乎都编译失败,因此这里有必要记录一下。下面以从ffmpeg社区获取到的静态库和头文件的例子,来讲解将静态库编译成动态库so。编写的Android.mkLOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODUL原创 2020-12-04 09:18:13 · 825 阅读 · 0 评论 -
Android多媒体添加软解码
1 软解码加载简介1.1 编解码器信息与配置导入android中decoder的管理是以plugin的模式,其控制是在OMXMaster内完成的。OMXMaster是在omx被创建时就创建了OMX::OMX(): mMaster(new OMXMaster),mNodeCounter(0) {}Plugin在OMXMaster构造的时候载入OMXMaster::OMXMaster(): mVendorLibHandle(NULL) { addVendorPlugin(); /原创 2020-12-03 18:35:10 · 3011 阅读 · 0 评论 -
Android recovery修改字库大小
在Android开发过程中,各个厂商通常会去修改recovery界面。在recovery显示界面上,通常有几大修改点:recovery字体大小recovery界面背景图、进度条等修改、提示语修改recovery支持中文显示这篇文章,主要讲一下如何修改recovery字体大小。1 常用的字体大小修改方法直接上结论:方法1:制作图片修改recovery源码目录fonts下的png文件,如12x22.png,将它拷贝到recovery的out目录下的/res/image目录下,命令为font.原创 2020-11-16 09:33:32 · 1536 阅读 · 2 评论 -
Android电源管理之系统休眠
1. 概述设备的休眠是功耗分析中的重要篇章,有些问题经常会涉及到系统无法休眠,经常被唤醒等情况。在这里将从代码角度来分析下Android系统休眠和唤醒的机制,而本篇将着重阐述休眠机制。 Android系统的电源管理子系统是已Linux的电源管理系统为基础,针对现实问题又进行了改造,而这里的现实问题来自于PC和移动设备的差异,其核心在于什么时候休眠,什么时候唤醒。在PC系统中,什么时候让系统进入休眠(通常是STR、Standby、Hibernate等suspend操作)这个问题很容易理解:答案就是由用户原创 2020-08-17 14:25:36 · 5195 阅读 · 0 评论 -
Android input键值从底层到应用层映射流程与修改方法
一、Android输入子系统简介:Android输入事件的源头是位于/dev/input/下的设备节点,而输入系统的终点是由WMS管理的某个窗口。最初的输入事件为内核生成的原始事件,而最终交付给窗口的则是KeyEvent或MotionEvent对象。因此Android输入系统的主要工作是读取设备节点中的原始事件,将其加工封装,然后派发给一个特定的窗口以及窗口中的控件。这个过程由InputManagerService(以下简称IMS)系统服务为核心的多个参与者共同完成。二、kernel键值定义(1)键扫原创 2020-08-13 16:38:43 · 4637 阅读 · 0 评论 -
selinux常见neverallow项解决方法与常用命令
1. dac_overrideegbin: type=1400 audit(0.0:879): avc: denied { dac_override } for capability=1 s:egbin:s0 tclass=capability permissive=1 需要给egbin dac_override权限,但是该权限是Android P的neverallow规则中的,不能被添加。dac_override权限意思是容许进程旁路的所有DAC权限:uid,gid,ACL 等等,即有这个权限可原创 2020-08-13 16:31:25 · 28857 阅读 · 2 评论 -
在Android和linux上操作GPIO
本文记录如何在Android和linux上操作GPIO 。1 前置条件ROM必须满足以下条件:* Android M >= V170603* Android N >= V170421* Ubuntu Server >= V180712* Ubuntu Mate >= V1805312、如何获取GPIO编号可以从GPIO Bank或 Pins 获取GPIO编号。 不同版本的内核将有所不同。Linux 3.14 (Android M, N and原创 2020-07-03 17:49:25 · 1419 阅读 · 0 评论 -
Android 编译错误undefined symbol分析与解决
Android 编译错误undefined symbol分析与解决方案最近在Android Q上写一个bin文件时遇到编译报错的问题,具体报错如下:ld.lld: error: undefined symbol: android::RefBase::decStrong(void const*) const>>> referenced by StrongPointer.h:182 (system/core/libutils/include/utilsPointer.h:182)原创 2020-07-03 15:51:40 · 48217 阅读 · 2 评论 -
使用wareshark导出网络包视频流
在分析播放问题时,经常需要抓取网络包进行分析,判断网络是否有丢包、抖动,延时等。如果能从网络包从导出视频流,然后查看视频流的播放情况,在一定程度上也能帮助我们分析、解决问题。下面将一种使用wareshark获取视频流的方法。1、用wareshark打开网络包2、过滤视频流选择任意一个视频流,右键选择追踪流->UDP流等待左下角加载完,才可以操作3 保存视频流数据加载完之后,点击 显示和保存数据为 原始数据,然后点击Save as弹出保存的界面,数据文件名为.ts,然后保存等原创 2020-06-23 18:12:32 · 2957 阅读 · 2 评论 -
动态so库修改方法
对于linux和Android开发者,有时可能需要查看或者修改.so文件,下面来讲述如何查看或者修改so文件。1、本文使用的工具IDA Pro: https://www.52pojie.cn/thread-675251-1-1.html010 Editor:http://www.pc6.com/softview/SoftView_55129.html2、反编译.so文件 本文使用的反编译软件是IDA Pro,它是一个优秀的静态反编译软件。由于IDA功能较为复杂,本文只给出查看和修改so直接相原创 2020-06-01 15:48:54 · 9054 阅读 · 0 评论 -
Android添加自定义公共so库
Android对应用应用的系统库限制越来越严格,上层应用包括(apk、jar包)不能直接引用系统的一些so库了。如果需要使用,只能使用,系统申明的公共库。如果使用非系统申明的公共库,apk运行后调用该so库时,app会直接挂掉。1、错误信息具体报错形式如下:01-01 02:17:24.222 7475 7475 E linker : library "/system/lib/libhalloworld.so" ("/system/lib/libhalloworld.so") needed原创 2020-05-26 15:51:14 · 7402 阅读 · 1 评论