最近在公司有听到同事做的一个需求。就是一个非系统应用(不使用系统签名),通过额外的方法,将自身一个AIDL service的binder句柄通过ServiceManager.addService接…
(原创)使用AOSP源码为Khadas VIM3编译系统镜像
事情的开始是这样,去年在咸鱼蹲了一块Khadas VIM3的开发板,本来是想体验一下Fuchsia系统的的,但是Fuchsia系统对VIM3支持并不好,一直没有运行成功,但是呢,最近发现Googl…
(原创)基于Android R之了解下ArtField、ArtMethod、DexCache和Class
在初略了解了ClassLinker之后,我们下一步先了解一些相关的类或者结构体。ArtField在ART虚拟机底层中用来表示类的成员变量的;ArtMethod则是用来表示类的成员方法;DexCac…
原创)基于Android R之ClassLinker分析
ART虚拟机系列,在前几篇我们分析了ART虚拟机的创建、JavaVmExt和JNIEnvExt。这篇我们继续展开,我们来分析下ART虚拟机中ClassLinker的作用。首先我们看下ClassLi…
(原创)基于Android R之ART虚拟机JNIEnvExt类介绍
说到JNIEnvExt这个类,其实是和JavaVMExt类似的,JavaVMExt是从JavaVM继承而来,而JNIEnvExt类则是从JNIEnv继承而来,类关系图和JavaVMExt也是类似的…
(原创)基于Android R之ART虚拟机的JavaVmExt类和InitNativeMethods方法介绍
这一篇是紧接着上一篇《(原创)基于Android R之ART虚拟机的创建流程》遗留的一些问题做进一步分析。上一篇我们遗留了两个内容,一个是JavaVmExt类,另一个则是InitNativeMet…
(原创)Odex文件二进制分析
最近在看ART虚拟机相关的内容,稍微有了解的都能知道/data/dalvik-cache下的.dex后缀的文件和odex文件实际上都是修改过的ELF文件,网上有很多说明,但是貌似都没有找到一篇对一…
Native(C、C++)跨层访问Java注册的service
上一篇我们介绍了在Java层如何跨层访问在Native(C、C++)层注册的Binder service。这一篇我们打算反过来,在Native(C、C++)层跨层访问Java层注册的Binder …
Java跨层访问native(C/C++)注册的service
进行Binder开发时,比较多是在同语言下进行的,比如在JAVA下可以手动实现或者通过AIDL实现,在C++下手动实现。但是Binder也是可以夸语言通信的,这里打算分两篇来进行说明,其中一篇是在…
基于Android 9之应用冷启动过程分析(三)之进程创建过程
上一篇最后分析到:因为我们现在做的假设是应用的冷启动,所以系统中是还没有对应的进程的,需要通过startSpecificActivityLocked方法来创建对应的进程。这一篇我们从这个方法开始 …