自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 Android广播发送流程(广播3)

Android S广播发送流程1. 广播发送流程2. 广播发送3. 系统处理广播发送3.1 AMS接收广播的请求3.2 修改增加默认flag解析可选广播参数BroadcastOptions3.4 保护广播isProtectedBroadcast、特定action的处理3.5 发送粘性广播的处理3.6 筛选出静态广播接受者3.7 筛选出动态广播接受者3.8 非oder的平行广播的入队与分发3.8 order广播接收者的过滤4. 广播队列的处理4.1 新建广播队列4.2 广播接收者入队列4.3 广播队列的分发4

2022-05-03 20:23:08 6513 2

原创 Android 静态广播注册流程(广播2)

Android S静态广播注册流程1. 静态广播注册的流程2. 在AndroidManifest静态注册广播3. AndroidManifest静态注册接受者的安装过程4. 总结1. 静态广播注册的流程上一篇文章讲了动态广播的注册(系统存储在mReceiverResolver中),这篇文章主要讲解静态广播的注册流程2. 在AndroidManifest静态注册广播还是以亮屏SCREEN_ON和开机BOOT_COMPLETED静态广播为例子//在AndroidManifest.xml中定义如下

2022-04-27 16:56:15 8402

原创 Android 动态广播注册流程(广播1)

Android S动态广播注册流程1. 动态广播注册的流程2. 新建一个动态广播接收者3. App部分的registerReceiver4. system_server侧的广播注册5. 总结一下1. 动态广播注册的流程先看一下大致文件和流程如下:2. 新建一个动态广播接收者广播好久之前就准备写了,最近有时间就先把广播这部分写完这篇文章就先将动态广播注册的流程先看一下,在一个activity中注册一个亮屏的动态广播 //新建一个BroadcastReceiver,用于接收广播 p

2022-04-25 21:48:39 7529 2

原创 Android adj调整 --- computeOomAdjLSP流程详解

Android S adj调整 --- computeOomAdjLSP详细注释Android S adj调整 --- computeOomAdjLSP详细注释Android S adj调整 — computeOomAdjLSP详细注释这次就先讲OomAdjuster.java中adj调整最为关键的函数computeOomAdjLSP,这个函数几乎占了adj调整代码1/3的代码量,非常重要,建议阅读之前先看一下之前的:Android S进程的adj值、Android adj调整时的各类进程状态。至于Oo

2022-03-27 18:44:21 9208 3

原创 Java代码执行顺序

Java代码执行顺序1. Java初步认知2. Javayun.java例子3. 反编译Javayun.class文件4. 分析Javayun_dxdump文件5. 再来一个网上的例子JavaTest.java6. 查看一下JavaTest的反编译数据7. 总结一下1. Java初步认知大家对于Java的执行顺序应该都有一定了解,起码书本上或者影响中有一点了解,如静态变量、普通变量、类、静态函数、静态代码块、构造函数应该都知道和会用。这次就将一下Java入门的基础内容:clint函数、init函数、

2022-03-06 21:58:46 4517

原创 Android如何查找java代码编译路径

Android如何查找java代码编译路径1. 源文件代码位置2. 查找文件编译后存放的地方3. 找一下这个文件在哪里4. 看一下实际效果1. 源文件代码位置如果有code search,那么直接使用code search,如果没有可以使用locate "***.java"来查找对应的文件举一个例子想要调试FinalizerDaemon这个class,先“frameworks/base”搜索一下在frameworks/base/config/preloaded-classes可以找到类似定义j

2022-03-03 20:38:03 3611 1

原创 Android进程的adj值

Android S进程的adj值1. Android S进程的adj值1. Android S进程的adj值//在未调整adj之前(没有进行初始化过),adj的值是INVALID_ADJ,这个值非常小,也就是优先级很大static final int INVALID_ADJ = -10000;//这个是未知的adj,一般cachedAdj的初始值,在cached进程进行重新调整(assignCachedAdjIfNecessary)之前会是这个值static final int UNKNOWN_A

2022-02-20 11:34:57 3951 1

原创 Android adj调整时的各类进程状态

Android adj调整时的各类进程状态1. dump一下进程的信息2. ProcState的枚举值和打印字串的对应关系3. ProcState的各类状态都是在什么时候设置,都代表什么意思1. dump一下进程的信息使用adb shell dumpsys activity p可以将Android的各类进程状态信息打印出来,这通常对于分析进程的运行状态和adj有很大帮助Process LRU list (sorted by oom_adj, 46 total, non-act at 6, non-s

2022-02-11 11:44:27 4519 1

原创 Android APP memory用量如何回收

Android APP memory用量如何回收1. Android APP memory用量都有哪些2. Native Heap的用量分析3. Dalvik Heap的用量分析4. mmap的用量分析5.EGL/GL mtrack的用量分析6. Memory用量如何及时回收1. Android APP memory用量都有哪些$ adb shell dumpsys -t 100 meminfo com.android.systemuiApplications Memory Usage (in Kil

2022-01-18 11:22:20 3450

原创 微信tinker导致冷启动变慢的问题优化

微信tinker导致冷启动变慢的问题优化1. Android S用户反馈微信启动慢2. 抓取微信systrace查看一下3. tinker对冷启动时间的影响4. 修改方案5. Open Dex是什么时候触发的?其中传入的location又是那里来的?6. 断点看一下带tinker和不带tinker的ClassLoader7. 微信内部tinker加载的流程8. 优化tinker导致启动慢的方案1. Android S用户反馈微信启动慢首先第一个想到的就是dex的状态问题是否有进行oat dex(例如

2021-12-28 20:21:09 3154

原创 Android进程保活的常用方法

Android进程保活的常用方法进程保活和去保活,一直是一个热门的讨论话题,先看一下保活方法方法1:APP内部提升优先级Perceptible(用户可以感受到其运行的(如后台运行的music playback),1)在服务的oncreate添加 startForeground(1, new Notification()); (这种需要常驻通知,如mtkloger、music等)2)还有另外一种方法,就是am.setProcessForeground/setProcessImportant(mFo

2021-12-02 11:28:12 3856

原创 如何使抓取的各类profile生效

如何使抓取的各类profile生效1. system_server系统的profile2. boot image上层所有进程的profile3. 系统预置应用的profile1. system_server系统的profileSystemServer.art-profile1、增量修改源码中的services/art-profile可以源码中的art-profile做比较,看一下哪些是新增的frameworks/base/services/art-profile如果是这样的话,建议“Androi

2021-11-23 09:48:54 2447

原创 Android S抓取各类profile的方法

Android S抓取各类profile的方法1. 准备环境2. 开始抓取3. 转换一下profile1. 准备环境这里讲的是自己的方法:大概思路就是将dex全部限制掉,就算没有限制掉的也只做默认quicken模式,在build里面找设置compilerFilter的地方,全部改了,有多没少(有部分可以不需要修改,大家也可以参考Google的方法,这里只是提供大概的伪代码思路)1、build/make/target/product/runtime_libart.mk中修改,增加下面的修改//bu

2021-11-22 09:32:18 2460 1

原创 Android S中各类dex文件

Android S中各类dex文件1. Android S中APK(预编译)中的dex文件2. 安装/开机过程中的dex文件3. 出现prof文件后,手动触发重新做一次dex2opt4. system_server的dex文件5. Boot image 文件1. Android S中APK(预编译)中的dex文件例如Photos,26M ./oat/arm/Photos.vdex5.9M ./oat/arm/Photos.odex1.4M ./oat/arm/Photos.art33M ./o

2021-11-19 15:16:42 3374

原创 Android S ART的变化

Android S ART的变化1. Android compiler-filter的发展历程2. profile与其中的appimage3. Android S相对于Android R的变化1. Android compiler-filter的发展历程通过历代Android compiler-filter,可以发现Google在art这块的技术路线Android M(6) Android N(7) Android O(8) Android P(9) Android Q(10) Android R(1

2021-11-19 10:11:50 5101

原创 art profile生成差异的问题分析

art profile的问题分析1. art profile生成差异的问题2. cts测试内容的分析3. 模拟验证4. snapshot-profile的流程5. prepareAppProfile的流程1. art profile生成差异的问题最近Android S遇到一个问题,art升级以后,cts测试失败了,报错日志I/ModuleListener: [1/1]com.android.compatibility.common.tradefed.testtype.JarHostTestcom

2021-10-12 17:37:26 2525 6

原创 heaptargetutilization/heapmaxfree/heapminfree/heapstartsize/multiplier虚拟机参数的配置

关于虚拟机的参数的调整 --- heaptargetutilization/heapmaxfree/heapminfree/heapstartsize/foreground-heap-growth-multiplier的配置1. 这些参数都是什么意思2. ART解析使用这些参数3. 案例讲解4. ART参数调试时加入的日志1. 这些参数都是什么意思[dalvik.vm.foreground-heap-growth-multiplier]: [2.0]=>标记的是前后台进程分配内存用量的时候增长

2021-09-02 20:19:56 1746

原创 关于虚拟机参数的调整 --- heapgrowthlimit/heapsize的配置

关于虚拟机的参数的调整 --- heapgrowthlimit/heapsize的配置1. ProtoLog如何动态打开(android R开始引入)1. ProtoLog如何动态打开(android R开始引入)类似源码里面的 ProtoLog.v,在userdebug版本可以动态打开

2021-08-31 20:50:30 6074

原创 Android各类日志如何动态打开

Android各类日志如何动态打开ProtoLog如何动态打开(android R开始引入)2. 关于代码里面写的isLoggable,开关如何打开(很早就有了)3. ams wms等日志的动态打开4. 其它动态日志ProtoLog如何动态打开(android R开始引入)类似源码里面的 ProtoLog.v,在userdebug版本可以动态打开ProtoLog.v(WM_DEBUG_ORIENTATION, "Orientation continue waiting for draw in %s"

2021-08-24 18:45:40 5662 1

原创 性能问题分析方法[1] --- RAM

性能问题分析方法(1) --- RAM性能问题分析方法(1) --- RAM1. RAM内存占用导致的问题2. Native process的内存调试方法3. 显示端的内存调试4 Java process导致的内存泄漏4.1 MAT分析4.2 Android Studio的Profile分析4.3 java native分析4.4 binder分析4.5 其它调试方法功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中

2021-05-11 15:58:30 2159 1

原创 Android转屏流程与优化(Google转屏算法)

Android转屏流程与优化(Google转屏算法)1. 转屏慢与整体分析思路我们用手机转屏的时候,会发现有时候转屏特别慢,快的和慢的会相差1倍,例如快的转屏700ms,慢的转屏会1.2s以上.目前分析思路是: 1、gsenor上报数据是否有延迟? 2、gsensor上报的数据准确后,google的算法需要多长时间才能转换为方向改变? 3、上层处理转屏时间是多长时间?即冻屏时间是多长 4、转

2017-12-14 09:50:06 4021 1

原创 android N进程启动流程(二)(上一个activity的暂停、进程启动、绑定进程与创建application)

android N进程启动流程(二)(上一个activity的暂停、进程启动、绑定进程与创建application)第二部分将分为:上一个activity的暂停、进程启动、绑定进程与创建application5. 上一个activity的暂停 图5.1 上一个activity的暂停接着章节3.6的startActivityUnchecked中会调用最后有调用resumeFocusedStackTo

2017-11-21 12:07:42 5585

原创 android N进程启动流程(一)(捕获输入事件、准备创建activity、焦点切换)

android N进程启动流程(一)(捕获输入事件、准备创建activity、焦点切换)1. 背景本文主要针对event log中各处节点进行进程启动流程分析。//此处使用的是adb指令input tap + location的方法(具体实现可以参考)//Input.java (frameworks\base\cmds\input\src\com\android\commands\input)/

2017-11-02 20:04:59 3797

原创 Android O_GO后台启动服务改动

Android O_GO后台启动服务改动1. 问题现象应用在适配Android O/GO的系统时,会发现后台启动不了服务,会报出如下异常,并强退:java.lang.RuntimeException: Caused by: java.lang.IllegalStateException: Not allowed to start service Intent { cmp=com.android.

2017-10-26 12:07:10 4095

原创 AndroidO Battery saver省电助手实现原理

AndroidO Battery saver省电助手实现原理1. 功能概述Battery saver是Google在Android L上新增的选项,这个功能是在Setting -> Battery (–> more (androidO以前的路径)) –> Battery saver,这个功能主要是为了在相同电量下能够更长时间的使用手机,简称:“省电助手”。打开之后手机将处于省电模式,省电模式下电池使

2017-09-30 15:55:32 4391

原创 Android界面调试的基本方法---bitmap显示出来

Android界面调试的基本方法—bitmap显示出来大家在代码中是不是经常会遇到bitmap呢?你们在分析、解决问题的时候有没有想过看看这个bitmap到底是什么,对不对劲?下面提供一种方法就是将:bitmap转换成jpeg图片,并且在gallery中显示出来的代码。这个例子很简单,希望对大家在分析问题的时候有帮助 => static int mFilePathNum = 0; pu

2017-09-29 16:55:48 5571

原创 jpeg图片格式详解

jpeg图片格式详解1. JPEG文件简介JPEG的全称是JointPhotographicExpertsGroup(联合图像专家小组),它是一种常用的图像存储格式, jpg/jpeg是24位的图像文件格式,也是一种高效率的压缩格式,文件格式是JPEG(联合图像专家组)标准的产物,该标准由ISO与CCI TT(国际电报电话咨询委员会)共同制定,是面向连续色调静止图像的一种压缩标准。其最初目的是使用6

2017-09-29 16:27:41 114210 20

原创 bmp图片格式详解

bmp图片格式详解1. BMP文件简介BMP(Bitmap-File)图形文件是Windows采用的图形文件格式,在Windows环境下运行的所有图象处理软件都支持BMP图象文件格式。Windows系统内部各图像绘制操作都是以BMP为基础的。windows 3.0以前的BMP图文件格式与显示设备有关,因此把这种BMP图象文件格式称为设备相关位图DDB(device-dependent bitmap)

2017-09-29 15:51:07 28687 2

原创 CPU降频实现原理与试验数据

CPU降频实现原理与试验数据1. CPU降频实现原理CPU降频主要是通过控制CPU的工作模式和工作频率来达到的。1.1 CPU工作模式调整Android的CPU工作模式是基于linux的,在androidL上支持的CPU工作模式有:ondemand、userspace、powersave、interactive和performance。1,performance :顾名思义只注重效率,将CPU频率固

2017-09-29 15:03:25 5193

原创 Android上层如何fork一个进程

Android上层如何调用一个底层函数1. 背景本文讲的是调用流程,如何找到相应代码位置,更多的是一种分析代码的方式。此处将从ZygoteInit调用Zygote.forkSystemServer函数开始跟踪代码直到fork根据父进程和子进程返回pid为止,这会是从上到下的一条简单而通用的例子。本文的代码是基于Android O的MR0进行分析(kernel仍然是kernel-3.18),MR1正式

2017-09-23 12:06:44 3591

空空如也

空空如也

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

TA关注的人

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