在lowmemorykiller的源码分析中,我们了解到在内存紧张的情况下,lmkd会根据oom的分数值,对应用进行清杀操作。上一篇主要讲lmkd驱动及lmkd守护进程的相关内容,还没有涉及到oo…
(原创)使用Android NDK socket编程对比多路复用select和epoll的性能
上一篇在分析lowmemorykiller的时候遇到了一个特殊的调用,那就是epoll。epoll属于多路复用的机制之一。之前了解得不是特别深入,所以这一篇做一下深入了解,当然相关概念网上已经很多…
(原创)基于Android 8.1之lowmemorykiller源码分析
在使用Android的过程中,我们经常性的会按Home键返回到桌面,然后打开其他的应用进行使用,而此时前一个应用会驻留在内存中,当再次打开该应用时就可以直接显示使用。通过这种方法可以提升用户体验以…
(原创)zram算法比较以及zstd移植
zram类似压缩饼干,是将RAM中暂时不用的部分RAM使用压缩算法压缩后,在写会RAM中,以达到RAM释放的功能。zram是一个块驱动,源码在kernel根目录下的drivers/block/zr…
(原创)Lineage下载编译刷机教程(以Pixel为例)
前言 博主之前有写过使用AOSP的源码为Pixel编译系统镜像的文章,这一篇我们不玩AOSP的源码了,我们玩一下Lineage的源码,Lineage是由第三方开发、基于Android的、旨在提供系…
(原创)pm指令源码分析
平时在开发调试的时候用pm指令用得蛮多的,pm指令可以列出系统支持的feature、permission和当前已安装的apk等信息。所以今天我们来阅读一下pm指令的代码,做下简单分析。 Andro…
(原创)在JNI(Native)层调用Android的Log系统
最近在用Android Studio写JNI程序,发现在写Native层C++代码时貌似没有特别好的打印Log的方法,所以就有了这一篇,这一篇主要是通过查找、记录Android层面的Log方法,然…
(原创)基于Android 8.1之PackageInstaller源码分析(三)
上一篇我们讲到在PackageInstallerSession的commitLocked方法中,我们最后调用了PackageManagerService的installStage方法。这里我们直接…
(原创)基于Android 8.1之PackageInstaller源码分析(二)
上一篇讲到如果允许安装未知源程序,并且应用属于未知源程序,就会调用initiateInstall进行安装,而initiateInstall最后会调用startInstallConfirm进行安装确…
(原创)基于Android 8.1之PackageInstaller源码分析(一)
前言 前面两篇文章简单讲述了PackageManagerService的启动过程,和APK安装的内容一直都没有涉及到。APK可以通过多种方式安装,例如通过adb install安装、系统开机会默认…