自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (9)
  • 收藏
  • 关注

原创 Android通知显示framework流程解析

本文基于Android 14源码,来探究通知的发送过程中所发生的步骤,以此来揭开通知的面纱。

2024-09-21 22:04:29 854

原创 Android通知服务及相关概念

通知的启动和重要类

2024-09-21 22:03:25 977

原创 Android中apk安装过程源码解析

android apk安装流程源码解析

2024-08-25 21:48:07 1773

原创 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 615

原创 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 1218

原创 Android指纹录入与解锁源码解析

Android中指纹相关逻辑详解

2024-07-14 16:52:21 1101

原创 Android人脸解锁源码解析

Android人脸解锁相关逻辑

2024-07-14 16:47:34 895

原创 Activity启动流程

Activity启动流程详解

2024-07-14 16:42:13 1315

原创 Keyguard上滑解锁流程解析

Android T Keyguard上滑解锁流程解析

2022-12-11 20:26:13 1725

原创 Hello

2021-11-07 12:49:20 227

原创 鸿蒙account系统帐号组件解析

1 account组件框架在标准系统上,系统帐号组件主要提供分布式帐号登录状态管理能力,支持在端侧对接厂商云帐号应用,提供云帐号登录状态查询和更新的管理能力。2 目录结构/base/account/os_account├── common # 公共基础模块│ ├── account_error # 错误码定义│ ├── log # 日志打印代码│ ├── perf_stat # 性能统计│ └── t

2021-06-14 18:04:31 1674

原创 鸿蒙时间组件解析

1 时间组件架构时间组件提供管理系统时间的能力。2 目录结构/base/miscservices/time├── etc # 组件包含的进程的配置文件├── figures # 构架图├── interfaces # 组件对外提供的接口代码│ └── kits # 对应用提供的接口├── profile # 组件包含的

2021-06-14 13:32:17 1639

原创 鸿蒙init模块源码解析

1 简介init组件负责处理从内核加载第一个用户态进程开始,到第一个应用程序启动之间的系统服务进程启动过程。从系统启动流程来看,init位于kernel启动之后,user程序启动以前。user程序,是指用户可交互的程序(比如Home、SystemUI、WeChat等)。init模块负责解析系统引导配置文件,并执行里面的命令,完成系统的引导操作。鸿蒙OS的引导配置文件使用JSON格式。系统开发人员会在这里接触到鸿蒙系统的第一个配置文件。这一点应该是借鉴Linux系操作系统。我们知道Android系

2021-06-14 00:11:23 1073 1

原创 android存储系统

​ Android的存储系统主要由SystemServer进程的MountService和Vold进程的VolumeManager组成。它们管理系统的存储设备,执行各种操作,如mount、unmount、format等。​ 在Android存储系统中,MountService是为应用提供服务的Binder类,运行在SystemServer中,而StorageManager是MountServer的代理,在用户进程中使用的。Vold是一个守护进程,负责和底层存储系统驱动交互。MountService和

2021-03-30 14:27:01 617

原创 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 1659 1

原创 Android应用程序资源管理器(Asset Manager)的创建过程分析

Android应用程序资源管理器(Asset Manager)的创建过程分析 在前面一篇文章中,我们分析了Android应用程序资源的编译和打包过程,最终得到的应用程序资源就与应用程序代码一起打包在一个APK文件中。Android应用程序在运行的过程中,是通过一个称为AssetManager的资源管理器来读取打包在APK文件里面的资源文件的。在本文中,我们就将详细分析Android应用程序资源管理器的创建以及初始化过程,为接下来的一篇文章分析应用程序资源的读取过程打下基础。​ 从前面Andro

2021-03-30 10:52:27 516

原创 Android应用程序启动过程-full_step

Android应用程序启动过程​ 在Android系统中,应用程序是由Activity组成的,因此,应用程序的启动过程实际上就是应用程序中的默认Activity的启动过程,本文将详细分析应用程序框架层的源代码,了解Android应用程序的启动过程。​ 在Android系统中,有两种操作会引发Activity的启动,一种用户点击应用程序图标时,Launcher会为我们启动应用程序的主Activity;应用程序的默认Activity启动起来后,它又可以在内部通过调用startActvity接口启动新的A

2021-03-26 16:45:31 639

原创 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 791

原创 编译静态库为动态so库

在从事Android开发的过程中,经常会使用到用c或c++编写的第三方的静态库,比如对接第三方时,对方不希望提供源码,又比如在我们的编译环境下,无法编译某个库。这个时候就可以用静态库来编译成动态库so。之前在网络上看过很多方法,似乎都编译失败,因此这里有必要记录一下。下面以从ffmpeg社区获取到的静态库和头文件的例子,来讲解将静态库编译成动态库so。编写的Android.mkLOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODUL

2020-12-04 09:18:13 804

原创 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 2934

转载 GStreamer和gst-omx插件

1 Gstreamer基本介绍1.1 Gstreamer简介Gstreamer是linux上的多媒体框架。如下所示:从上面这个图中可以看到,底层是以plugin插件形式存在包括codec标准,parser,audio, protocol等,也包括用户自己开发的plugin和第三方开发的plugin。core framework提供了plugin之间的交互机制和管理,通过将一些plugin连接起来形成一个系统,并且对上提供访问的接口。APP是构建在framework上的。通过这个框架,底层开发者可以

2020-11-26 16:40:40 3098 1

转载 repo新建分支

最近在做一个项目的移植,需要从主分支上,拉一个分支来移植旧平台上的修改。之前都是用git仓库直接管理版本,但是这个项目由于有多个git仓库,因此使用了repo来管理这些git仓库,从事这个项目,首先我需要拉一个repo分支来移植。​ repo最大的特点就是其实repo只不过是利用git(manifest仓库)来记录管理多个git仓库而已。因此我们利用repo创建一个新的分支,其实就是给repo管理的每个git仓库创建一个一样的新分支。我们知道单个git仓库创建分支的命令很简单。1.创建一个新分支gi

2020-11-24 18:49:09 8400 1

原创 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 1475 2

原创 Android电源管理之系统休眠

1. 概述设备的休眠是功耗分析中的重要篇章,有些问题经常会涉及到系统无法休眠,经常被唤醒等情况。在这里将从代码角度来分析下Android系统休眠和唤醒的机制,而本篇将着重阐述休眠机制。  Android系统的电源管理子系统是已Linux的电源管理系统为基础,针对现实问题又进行了改造,而这里的现实问题来自于PC和移动设备的差异,其核心在于什么时候休眠,什么时候唤醒。在PC系统中,什么时候让系统进入休眠(通常是STR、Standby、Hibernate等suspend操作)这个问题很容易理解:答案就是由用户

2020-08-17 14:25:36 4985

原创 Android input键值从底层到应用层映射流程与修改方法

一、Android输入子系统简介:Android输入事件的源头是位于/dev/input/下的设备节点,而输入系统的终点是由WMS管理的某个窗口。最初的输入事件为内核生成的原始事件,而最终交付给窗口的则是KeyEvent或MotionEvent对象。因此Android输入系统的主要工作是读取设备节点中的原始事件,将其加工封装,然后派发给一个特定的窗口以及窗口中的控件。这个过程由InputManagerService(以下简称IMS)系统服务为核心的多个参与者共同完成。二、kernel键值定义(1)键扫

2020-08-13 16:38:43 4280

原创 Linux使用mailx通过第三方SMTP发送邮件,也可发送附件

mailx安装1、手动安装:wget http://ftp.debian.org/debian/pool/main/h/heirloom-mailx/heirloom-mailx_12.5.orig.tar.gztar zxvf heirloom-mailx_12.5.orig.tar.gzcd heirloom-mailx-12.5/make && make inst...

2020-08-13 16:33:43 896

原创 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 28185 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 1328

原创 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 47491 2

原创 使用wareshark导出网络包视频流

在分析播放问题时,经常需要抓取网络包进行分析,判断网络是否有丢包、抖动,延时等。如果能从网络包从导出视频流,然后查看视频流的播放情况,在一定程度上也能帮助我们分析、解决问题。下面将一种使用wareshark获取视频流的方法。1、用wareshark打开网络包2、过滤视频流选择任意一个视频流,右键选择追踪流->UDP流等待左下角加载完,才可以操作3 保存视频流数据加载完之后,点击 显示和保存数据为 原始数据,然后点击Save as弹出保存的界面,数据文件名为.ts,然后保存等

2020-06-23 18:12:32 2766 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 8895

原创 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 7207 1

原创 算法系列--选择排序详解

选择排序原理:  从待排序的元素中选出最小(大)的元素放在起始位置,然后再从剩余的元素中选出最小(大)的元素放在已排好的部分之后,直到只剩最后一个待排序的元素为止. 首先初始化最小元素索引值为首元素,依次遍历待排序数列,若遇到小于该最小索引位置处的元素,则刷新最小索引为该较小元素的位置,直至遇到尾元素,结束一次遍历,并将最小索引处元素与首元素交换;然后,初始化最小索引值为第...

2019-11-22 23:08:36 134

原创 算法系列--堆排序详解

希尔排序(shell sort)该方法的基本思想是:将需要排序的序列划分为若干个较小的序列,对这些序列进行直接插入排序,通过这样的操作可使需要排序的数列基本有序,最后再使用一次直接插入排序。 对相邻指定距离(称为增量)的元素进行比较,并不断把增量缩小至1,完成排序。先取一个小于n的整数d作为第一个增量把文件的全部记录分成d个组。所有距离为d的倍数的记录放在同一个组中。先在各组内进行...

2019-11-22 22:59:31 130

原创 upnp协议中webserver详细流程图

2018-07-08 23:35:14 948 1

Linux使用mailx通过第三方SMTP发送邮件,带附件操作

mailx wget http://ftp.debian.org/debian/pool/main/h/heirloom-mailx/heirloom-mailx_12.5.orig.tar.gz tar zxvf heirloom-mailx_12.5.orig.tar.gz cd heirloom-mailx-12.5/ make && make install UCBINSTALL=/usr/bin/install vi /etc/nail.rc(在配置文件最后添加) set from=mag00g@xxx.com #(需修改)收件人显示的发件人名称,可填写你的名字等 set smtp=smtp.exmail.xx.com (需修改)你所使用的外部邮箱的smtp服务器地址 set smtp-auth-user=mag00g@xxx.com (需修改)你所使用的外部邮箱的用户名 set smtp-auth-password=1980019Ss (需修改)你所使用的外部邮箱密码 set smtp-auth=login 测试 echo 123 | mailx -v -s "test" 7710xxxx1@qq.com

2019-10-11

算法多样化_算法用动漫形式展

算法学习,适合初学者,非常不错,推荐给各位。。。。

2019-09-05

dlna source file

dlna source file use upnp lib and cling lib open source

2018-09-19

dlna_app_unsigned

android dlna debug apk for use privatly, this apk use upnp lib

2018-09-19

DLNA核心流程图

DLNA核心流程图,DLNA核心流程图,DLNA核心流程图,DLNA核心流程图

2018-08-11

教你如何学好Android

2016-04-16

电学端口串联叉指换能器连接分析

2016-03-15

MAx+plus代码

MAx+plus代码,实验模拟仿真,!

2012-09-29

世界数学难题.pdf

主要简述一些世界上数学难题,激发兴趣,极具感染力

2012-07-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除