
Android
文章平均质量分 77
HHTC_NICE
主要从事Android系统开发工作
展开
-
Android ROM 常见debug方法
Android rom 常见debug方法原创 2022-07-01 21:58:09 · 1008 阅读 · 1 评论 -
Android系统稳定性简述
Android系统稳定性简述原创 2022-05-22 22:12:13 · 7354 阅读 · 3 评论 -
Android中的linux 系统调用
Android中的linux 系统调用在用户空间和内核空间之间,通过Syscall(系统调用, system call)的中间层来通信,连接用户态和内核态的桥梁。在ARM架构中,用户态程序通过swi 软中断进入内核态执行对应的系统调用,对于每一个系统调用都有对应的系统调用号,定义在unistd.h中。通过系统调用的方式,在一定程度上保护了系统的安全。相关代码位置:binonicbionic/libc/kernel/uapi/asm-generic/unistd.hbionic/libc/kern原创 2022-03-11 21:30:22 · 2815 阅读 · 0 评论 -
Systrace 和 Perfetto的使用
systrace 和per的使用原创 2022-01-27 23:46:09 · 5678 阅读 · 0 评论 -
SEAndroid
Android selinux SEAndroid原创 2022-01-22 17:06:07 · 2569 阅读 · 0 评论 -
Android Activity输入事件分发机制
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结Activity::attachActivity::makeVisibleWindowManagerGlobal::addViewViewRootImpl::setViewWindowInputEventReceiv原创 2021-07-18 10:25:32 · 697 阅读 · 2 评论 -
Android WallpaperManager 壁纸分析
1 壁纸example// 主屏幕壁纸flagpublic static final int FLAG_SYSTEM = 1 << 0;// 锁屏壁纸flagpublic static final int FLAG_LOCK = 1 << 1;WallpaperManager相关API介绍// 设置动态壁纸public boolean setWallpaperComponent(ComponentName name)// 清除锁屏壁纸public void c原创 2021-07-09 11:11:20 · 4991 阅读 · 3 评论 -
WindowManagerService之addWindow函数分析
addWindow函数分析public int addWindow(Session session, IWindow client, int seq, WindowManager.LayoutParams attrs, int viewVisibility, int displayId, Rect outContentInsets, Rect outStableInsets, Rect outOutsets, InputChannel outInputChannel)step 1, 权限检原创 2021-06-20 17:34:15 · 1310 阅读 · 0 评论 -
Android常见系统问题分析工具
selinux原创 2021-06-20 15:10:52 · 545 阅读 · 0 评论 -
WindowManagerService介绍
WindowManagerService原创 2021-06-15 22:24:21 · 555 阅读 · 0 评论 -
lowmemorykiller
lowmemorykillerAndroid系统中当Activity切换到后台,activity所在进程并不会马上退出,还是会继续存在系统中,便于再次启动提高响应速度(热启动),当内存达到一定极限值,lmkd会根据策略来杀掉一些优先级较低的进程来保障系统正常运行。lowmemorykiller Android8.0之前主要实现在kernel中,8.0以后主要在lmkd中,kernel使用vmpressure机制,达到和kernel解耦的目的, Android10.0在Android8.0的基础上新增了几个原创 2021-05-23 20:13:57 · 592 阅读 · 0 评论 -
Android adj相关简介介绍
Android应用程序主要以activity/service/contentprovider/broadcastrecevier四大组件组成,ActivityManagerService根据四大组件的生命周期函数,以及进程的创建,死亡等来动态调节进程自身的状态,影响进程的CPU占用时间,内存IO等资源分配。进程有两个比较重要的状态值,即adj(定义在ProcessList.java)和procState(定义在ActivityManager.java),控制缓存进程和空进程个数上限依赖于procState,原创 2021-03-18 10:20:41 · 2120 阅读 · 0 评论 -
Android 权限机制简单分析
Android6.0之前,设备上安装的软件只要在AndroidManifest.xml中声明了的权限就可以拥有那些权限(安装时权限), 6.0以及之后增加运行时权限,不但要AndroidManifest.xml中声明,APK运行时通过弹窗提示用户是否给予授权授权和撤销PackageManager提供了grantRuntimePermission/revokeRuntimePermission接口用来授权和撤销授权。这些权限一般是PROTECTION_DANGEROUS类型// PackageManag原创 2021-02-18 18:55:07 · 3236 阅读 · 0 评论 -
Android PowerManagerService简单分析
PowerManagerService是负责管理、协调设备电源管理的系统服务之一,它在Framework层建立起一个策略控制方案,向下决策HAL层以及kernel层来控制设备待机状态,控制显示屏,背光灯,距离传感器,光线传感器等硬件设备的状态。Android的电源管理主要是通过wakelock机制来管理系统的状态,整个android电源管理,可以分为四个层次:应用接口层(PowerManager.java)Framework层(PowerManagerService.java)HAL层(Power原创 2021-02-07 21:41:59 · 3856 阅读 · 0 评论 -
Android WakeLock简介
WakeLock简介WakeLock是一种表示应用程序需要让设备继续运行的机制,下载文件或者听音乐等等,设备在灭屏状态下,还需要继续运行,如果设备进入休眠,听音乐突然停止了,不符合使用场景。Android设备通过WakeLock机制来管理系统否需要真正的进入休眠,应用程序根据不同的使用场景,申请对应的锁,应用程序获得了WakeLock锁,系统就待机不下去。example// 申请权限android.permission.WAKE_LOCKPowerManager pm = (PowerManag原创 2021-02-07 21:25:59 · 5598 阅读 · 0 评论 -
Android ninja介绍
ninja简介早期的Android系统都是采用Android.mk的配置来编译源码,从Android 7.0开始引入ninja。ninja是一个编译框架,会根据相应的ninja格式的配置文件进行编译,使用ninja的主要目的是用来加快Android源码的编译速度Android.bpAndroid.bp的出现就是为了替换Android.mk文件。bp跟mk文件不同,它是纯粹的配置,没有分支、循环等流程控制,不能做算数逻辑运算。如果需要控制逻辑,那么只能通过Go语言编写。SoongSoong类似于之前原创 2021-02-04 23:46:11 · 2137 阅读 · 0 评论 -
Android dex, odex, oat, vdex, art文件介绍
下图可以简化将Java源转换为OAT的过程:.dexDalvik虚拟机字节码文件.vdex其中包含APK的未压缩DEX代码,以及一些旨在加快验证速度的元数据.odex .oat// JIT,Just-in-time,即时编译,边运行边编译;// AOT,Ahead Of Time,提前编译,指运行前编译。其中包含APK中已经过AOT编译的方法代码。原始DEX文件(例如classes.dex)被转换为另一个包含本机代码的文件。这个新文件通常具有.odex。.oat扩展名,并由ELF格式原创 2021-02-04 23:38:07 · 2977 阅读 · 0 评论 -
了解Android中的签名机制
数字签名简介数字签名技术是将信息摘要用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的信息摘要,然后接收者用相同的Hash函数对收到的原文产生一个信息摘要,与解密的信息摘要做比对。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改;不同则说明信息被修改过,因此数字签名能保证信息的完整性。并且由于只有发送者才有加密摘要的私钥,所以我们可以确定信息一定是发送者发送的。apk为什么需要数字签名在安装Apk时,同样需要确保Apk来源的真实性,以及Apk没有被第三方篡原创 2021-01-25 22:45:57 · 565 阅读 · 0 评论 -
Android DeathRecipient & RemoteCallbackList
DeathRecipientDeathRecipient类的作用,当Binder服务端程序挂掉了,通知给Binder客户端程序,binder服务端程序挂掉后,kernel会调用binder_release函数,发送死亡通知给绑定的Binder代理对象public interface DeathRecipient { public void binderDied();}Android系统中的使用案列public final class ActivityManagerService {原创 2020-11-15 21:54:18 · 3482 阅读 · 0 评论