- 博客(15)
- 资源 (1)
- 收藏
- 关注

原创 我的心路历程
2018.07.281. 为什么会写博客价值毕业那年,刚好碰到了Android的浪潮,接触到了Android,相伴已有7年, 从青涩少年已到中年。对于新的知识,我总是会研究一番,然后写上笔记上传到G Drive里面,现在打开G Drive来看,11年到现在我的笔记有:系统:编译系统原理、系统属性(SystemProperty)、Project Treble原理等。应用: S...
2018-07-29 01:03:52
937
原创 Android ANR原理代码分析(三)
分析解决ANRLOG原理收集系统发生ANR之后,会通过com.android.server.am.ProcessRecord#appNotResponding收集相关的log信息。主要代码逻辑 如下:void appNotResponding(String activityShortComponentName, ApplicationInfo aInfo, String parentShortComponentName, WindowProcessController pa
2021-04-19 16:23:51
2836
1
原创 Android ANR原理代码分析(二)
系统触发ANR机制如系统显示ANR机制分析,都是通过appNotResponding来触发ANR对话框的显示,我们通过索引搜索可以发现,总共有五个地方可以产生这个调用,这5个调用正是引起ANR的5个原因。com.android.server.am.ActivityManagerService#appNotRespondingViaProvider : ContentProvider 超时,目前没有使用。com.android.server.am.ActiveServices#serviceFo
2021-04-19 16:20:31
1765
1
原创 Android ANR原理代码分析(一)
如果 Android 应用的界面(主)线程处于阻塞状态的时间过长,会触发“应用无响应”(ANR) 错误。如果应用位于前台,系统会向用户显示一个对话框,如图 1 所示。ANR 对话框会为用户提供强行退出应用的选项(摘自Google官方介绍[ANR](https://developer.android.google.cn/topic/performance/vitals/anr?hl=zh_cn#java))。 的对话框,用户可以选择强制关闭,从而关掉这个进程。ANR机制是针对应用的,对于系统进程来说,如果长时间“无响应”,Android系统设计了WatchDog机制来管控。如果超过了“无响应”的延时,那么系统WatchDog会触发自杀机制
2018-07-28 23:53:22
11034
1
原创 Android Treble架构解析
本文主要介绍Treble架构下的HAL&HIDL&Binder相关技术原理。Treble的详细资料文档,请参考Treble 官方文档。1. Treble 简介Android 8.0 版本的一项新元素是 Project Treble。这是 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。Project
2017-12-21 16:39:11
35236
3
原创 Windows模拟linux终端工具Cmder+Gow
习惯了ubuntu的终端,Windows自带的终端很难用,现推荐终端 Cmder+ Gow工具来模拟ubuntu下面的操作。1. 说明Cmder:Windows下的终端模拟器。Gow: Windows下模拟Linux命令行工具集合。可以在windows执行linux下的大部分命令,如ls、grep、xargs等。2. 下载Cmder官网:http://cmder.net
2017-12-15 11:03:45
15724
2
原创 Android aapt 生成R.java和package.apk原理解析
本文基于AOSP-7.1.1-R9源码分析,源码可以参见frameworks/base/+/android-7.1.1_r9。Android Apk 编译原理解析的分析过程中,可以看到,为了生成最终的apk,在资源文件的编译生成过程中,会两次使用到aapt命令。生成R.java,编译系统通过acp命令将这个文件复制一份变成R.stamp。生成中间文件package.apk。编译系统为了生成Split.apk
2017-08-04 21:30:59
7369
原创 Android 系统服务之 ContentService
本文基于AOSP-7.1.1-R9源码分析,源码可以参见 frameworks/base/+/android-7.1.1_r9;从名字上看,ContentService是内容服务,和ContentProvider以及ContentRelsover相互关联。在使用ContentProvider创建共享的数据之后,其他进程为了访问数据,会调用ContentRelsover来进行相关操作。 在Andro
2017-07-17 17:41:35
5480
原创 Android Apk 编译原理解析
本文基于AOSP-7.1.1-R9源码分析,源码可以参见build/+/android-7.1.1_r9。简介在Android系统中,所有的应用都是以apk的形式存在,那这个apk是如何生成的呢?对于刚开始接触系统开发的开发者来说,经常会使用如下命令编译apk或者系统固件。source build/envsetup.sh;lunchmake -j8 ormmm packages/app/Se
2017-07-14 09:44:16
9166
原创 Android 多窗口框架全解析
本文基于AOSP Android-7.1.1-R9代码进行分析。 Android N的的多窗口框架中,总共包含了三种模式。Split-Screen Mode: 分屏模式。Freeform Mode 自由模式:类似于Windows的窗口模式。Picture In Picture Mode:画中画模式(PIP)经过一段时间的研究,总结一句话:多窗口框架的核心思想是分栈和设置栈边界。本文会从系
2017-07-13 10:31:52
17635
6
原创 Android Native Looper机制
Android Native Looper机制在分析Native层代码的时候,很多地方都用到了Looper机制,本文将深入分析一下,方便理解相关机制,在Android系统中,Native层提供了类似于java层的消息循环机制。机制的核心是通过epoll机制,主要就是优化轮询操作,本文不做讲解。Native层的消息Looper机制代码,主要实现位于:system/core/libutil
2017-06-30 13:55:07
4396
原创 RuntimePermisson介绍
1. 控制界面在设置–》应用–》Email–》权限,然后可以看到最直观的界面显示 AppPermissionsFragment.java这个界面是在packages/apps/PackageInstaller 里面来进行控制。 1. com.android.packageinstaller.permission.ui.AppPermissionsFragment#onCreate
2016-01-03 10:47:42
786
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人