Android Service启动流程分析 Android Service启动流程分析
之前写过App和Activity的启动流程分析: App启动流程分析 Activity启动流程分析 现在梳理下Service的启动流程吧 基于Android 10的源码分析 ContextWrapper.startService()
2020-08-23
Activity启动流程分析 Activity启动流程分析
在App启动流程分析中已经分析过大部分的流程了,但是对于Activity的启动流程并没有详细的说明,这里讲一下. 在分析源码之前,先想一下大概有哪些疑问: Activity是如何加载的? Activity为什么必须在Manifest文件中
2020-08-23
Android Hook之拦截Activity的启动 Android Hook之拦截Activity的启动
Android中的插件化和热修复已经应用了很多年了,这里面涉及的主要就是Hook,即反射 + 代理的技巧去实现一些常规代码无法实现的功能. 之前有说过Hook点击事件的方式,这里讲一下拦截Activity的Hook方法,这也是插件化的基础.
2020-08-22
Android Studio查看和调试AOSP源码 Android Studio查看和调试AOSP源码
之前说过使用VSCode阅读AOSP源码的方法,但是作为Android开发,还是对Android Studio熟悉一些,这里看下如何使用Android Studio查看AOSP源码. 如果你之前没完整的编译过AOSP,可以按照下面的流程进行
2020-08-21
MultiDex原理分析 MultiDex原理分析
单个Dex文件,即Dalvik Executable,代码中可调用的引用总数最多为64K(65536个). 版本差异 Android 5.0 之前 使用的是Dalvik虚拟机,默认情况下Dalvik会限制每个APK只能使用一个classes
2020-08-19
Android APP启动流程分析 Android APP启动流程分析
之前也写过Application启动流程之类的文章,但是总感觉这个程度不够,再来总结下. 先把脑子里那一堆忘掉,想一想要启动一个Application需要干什么: 需要知道app可执行文件的位置 即apk中的dex文件,或者经过dexop
2020-08-14
APK安装流程分析-普通APP的安装 APK安装流程分析-普通APP的安装
Android系统的代码总是在不断迭代的,具体的类和方法本身并不重要,关键是了解流程与主要的路径 本文基于AOSP master分支 2020年8月,Android 11 已经处于beta版 三种安装方式 系统级app安装 普通app安
2020-08-11
Java线程池源码分析 Java线程池源码分析
几种预定义的线程池 newFixedThreadPool public static ExecutorService newFixedThreadPool(int nThreads) { return new Thr
2020-07-29
ThreadPoolExecutor ThreadPoolExecutor
ThreadPoolExecutorpublic ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,
2020-07-29
Java反射 Java反射
关于反射原理性的知识可以看看类加载流程,对象实例化流程相关的文章,这里说一下反射的常用使用方法。 获取Class Class.forName ClassA.class classA.getClass Class常见方法 isPrim
2020-07-26
Hook点击事件 Hook点击事件
Hook的本质就是就是利用Java反射机制,将源码中一些类的对象替换自己实现的对象,以实现一些特殊的操作. 基本上所有Hook的入门都会从Hook一个View的点击事件开始. Hook之前,一般都得先看看源码,以找到如何反射,如何替换比较合
2020-07-25
Android系统启动流程-桌面程序的启动 Android系统启动流程-桌面程序的启动
在Android启动流程-SystemServer分析中有提到,在SystemServer启动“Other”类型服务的时候,最后阶段会执行ActivityManagerService的systemReady()方法,这里就是启动桌面程序的入
2020-06-29
Android系统启动流程-ART虚拟机的启动 Android系统启动流程-ART虚拟机的启动
启动JVM的通用流程 加载虚拟机实现的动态链接库(Android中是so文件); 一般通过dlopen方法加载so文件. 设置启动参数,并使用JNI_CreateJavaVM(JavaVM**, JNIEnv**, void*)方法创建虚
2020-06-28
Android中的Deep Link与 APP Link Android中的Deep Link与 APP Link
Deep link其实就是一种intent过滤器.可以直接进入APP特定的Activity. 如果APP中存在多个符合要求的Activity,会弹出一个选择框. App link一种特殊的deep link,需要验证网站网址. 用一
2020-06-28
Android系统启动流程-Native方法的注册 Android系统启动流程-Native方法的注册
在使用app_process 创建zygote进程的过程中会执行下面这些操作: 创建ART虚拟机 注册Native方法 找到ZygoteInit,通过反射调用它的main方法进入Java世界 这里说一下注册Native方法的一些细节.
2020-06-28
Android系统启动流程-SystemServer分析 Android系统启动流程-SystemServer分析
app_process64在启动zygote进程的时候,会从zygote进程fork出system_server进程. system_server的入口在SystemServer.java中 在Android启动流程-Zygote分析中已经
2020-06-26
使用VSCode阅读Android源码 使用VSCode阅读Android源码
在VSCode 中 ,打开命令面板进行编辑,可以使用UI页面编辑,也可以直接编辑json文件. 主要就是includePath,把主要的头文件路径都包含进去: { "configurations": [ {
2020-06-25
AOSP构建-Android.bp的理解 AOSP构建-Android.bp的理解
C/C++是一种非常古老的编程语言,在大型项目开发管理过程中,单靠MAKE,CMAKE等工具已经不满足需求了,因此催生出了各种个样的构建工具,比如Google自家的GN,Bazel等,还有CMake,XMake,Vcpkg等.工具虽然多种
2020-06-25
1 / 2