Jimmy's Blog

Jimmy
A Programmer
Android

(原创)基于Android 8.1之updateOomAdjLocked源码分析

  在lowmemorykiller的源码分析中,我们了解到在内存紧张的情况下,lmkd会根据oom的分数值,对应用进行清杀操作。上一篇主要讲lmkd驱动及lmkd守护进程的相关内容,还没有涉及到oom分数值更新的分析,所以这一篇我们分析updateOomAdjLocked方法是如何更新oom分数值的,另外分析外updateOomAdjLocked方法后,还能了解到除了lmkd因低内存杀死进程外的另一种内存清理操作。 updateOomAdjLocked分析   update…

2018-11-23 0条评论 2694点热度 5人点赞 jimmychen 阅读全文
Android

(原创)使用Android NDK socket编程对比多路复用select和epoll的性能

  上一篇在分析lowmemorykiller的时候遇到了一个特殊的调用,那就是epoll。epoll属于多路复用的机制之一。之前了解得不是特别深入,所以这一篇做一下深入了解,当然相关概念网上已经很多了,这里主要是通过写代码来进行了解,毕竟再多的概念不如使用一次来得直接。所以这篇的前面部分摘录自网络,在讲解基础的相关知识后,会通过Android NDK,编写一个socket程序,来对比select和epoll两者的性能。 概述   I/O多路复用就通过一种机制,可以监视多个描…

2018-11-19 0条评论 4164点热度 1人点赞 jimmychen 阅读全文
Android

(原创)基于Android 8.1之lowmemorykiller源码分析

  在使用Android的过程中,我们经常性的会按Home键返回到桌面,然后打开其他的应用进行使用,而此时前一个应用会驻留在内存中,当再次打开该应用时就可以直接显示使用。通过这种方法可以提升用户体验以及提高应用打开速度。但是系统内存是有限的,不可能一直将全部应用驻留在系统内存中,所以lowmemorykiller就诞生了。lowmemorykiller,如其名低内存杀手,作用是当内存处于低水平时,杀死系统中余留的暂时还不用的进程,以释放内存。下面我们直接分析lowmemorykiller的源码实…

2018-11-15 0条评论 3403点热度 0人点赞 jimmychen 阅读全文
Android

(原创)zram算法比较以及zstd移植

  zram类似压缩饼干,是将RAM中暂时不用的部分RAM使用压缩算法压缩后,在写会RAM中,以达到RAM释放的功能。zram是一个块驱动,源码在kernel根目录下的drivers/block/zram下,相关源码这里不做分析,这篇就简单做一下压缩算法性能的对比。这次主要对比的算法是lzo、lz4和自行移植的zstd,不过目前自行移植的zstd算法还是有问题,尝试了各种方法都没办法fixed,所以就放出来当做zram算法移植指导嘛。后面有时间再讲这个bug fix掉吧。 前言  &e…

2018-11-11 1条评论 6346点热度 1人点赞 jimmychen 阅读全文
Android

(原创)Lineage下载编译刷机教程(以Pixel为例)

前言   博主之前有写过使用AOSP的源码为Pixel编译系统镜像的文章,这一篇我们不玩AOSP的源码了,我们玩一下Lineage的源码,Lineage是由第三方开发、基于Android的、旨在提供系统性能和稳定性的操作系统,Lineage的前身是Cyanogen ROM。当然这套教程也适合其他Lineage支持的设备,像小米5、一加6之类的设备,Lineage支持的设备可以点击这里查看。 源码准备   要想编译Pixel能够使用的Lineage系统镜像,第一步当然是准备好源…

2018-11-09 0条评论 5659点热度 3人点赞 jimmychen 阅读全文
Android

(原创)pm指令源码分析

  平时在开发调试的时候用pm指令用得蛮多的,pm指令可以列出系统支持的feature、permission和当前已安装的apk等信息。所以今天我们来阅读一下pm指令的代码,做下简单分析。 Android.mk   首先我们来查看一下编译pm指令的Android.mk,看看pm指令包含哪些源码文件。Android.mk文件路劲为frameworks/base/cmds/pm [crayon-62f5e6fbc42c5133183467/] pm指令源码  &emsp…

2018-11-05 1条评论 3208点热度 1人点赞 jimmychen 阅读全文
Android

(原创)在JNI(Native)层调用Android的Log系统

  最近在用Android Studio写JNI程序,发现在写Native层C++代码时貌似没有特别好的打印Log的方法,所以就有了这一篇,这一篇主要是通过查找、记录Android层面的Log方法,然后在Native层进行调用,达到打印Log的效果。下面直接将源码贴上,源码也比较简单,供大家参考 ThrowException.h   这个类是一个辅助类,当找不到对应类、方法或者字段的时候可以直接调用这个这个方法的类来抛出异常。后续如果可以扩充这个类来完善异常抛出 [crayo…

2018-10-29 0条评论 2044点热度 1人点赞 jimmychen 阅读全文
Android

(原创)基于Android 8.1之PackageInstaller源码分析(三)

  上一篇我们讲到在PackageInstallerSession的commitLocked方法中,我们最后调用了PackageManagerService的installStage方法。这里我们直接从 PackageManagerService.java installStage [crayon-62f5e6fbc4cc9686218474/]   上面的代码中,在最后我们向mHandler发送了INIT_COPY,接下来我们分析mHandler是如何处理INIT_COPY…

2018-10-22 0条评论 2715点热度 0人点赞 jimmychen 阅读全文
Android

(原创)基于Android 8.1之PackageInstaller源码分析(二)

  上一篇讲到如果允许安装未知源程序,并且应用属于未知源程序,就会调用initiateInstall进行安装,而initiateInstall最后会调用startInstallConfirm进行安装确认。这一篇就从startInstallConfirm方法开始讲解。 PackageInstallerActivity.java [crayon-62f5e6fbc58b0748814074/]   上面安装应用的界面大致如下,升级应用或者应用不需要额外权限的界面大致类似,只是提示…

2018-10-17 0条评论 3263点热度 0人点赞 jimmychen 阅读全文
Android

(原创)基于Android 8.1之PackageInstaller源码分析(一)

前言   前面两篇文章简单讲述了PackageManagerService的启动过程,和APK安装的内容一直都没有涉及到。APK可以通过多种方式安装,例如通过adb install安装、系统开机会默认安装系统应用、将apk放到手机通过PackageInstaller交互安装等等。安装APK的方式很多,但是这里选择用户使用最多的安装方式进行讲解,即通过PackageInstaller交互式安装。PackageInstaller是Android系统的默认程序,源码路劲为packages/app/Pa…

2018-10-14 0条评论 3306点热度 2人点赞 jimmychen 阅读全文
12345…14
分类
  • Android / 45篇
  • ART虚拟机 / 7篇
  • Binder / 9篇
  • C/C++ / 10篇
  • JNI编程指南与规范 / 18篇
  • Linux / 12篇
  • SQL数据库 / 10篇
  • SurfaceFlinger / 10篇
  • 再战C Primer Plus / 14篇
  • 再战C++ Primer Plus / 14篇
  • 网络编程 / 4篇
Adsense

COPYRIGHT © 2022 Jimmy's Blog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang