IngresGe

其他

Android10.0 Binder通信原理(十)-AIDL原理分析-Proxy-Stub设计模式

Client绑定服务后,拿到了服务的代理Stub.proxy()。这和我们在前面Framewok层讲解的比较类似了,Client拿到BinderProxy对象,Server拿到Binder实体对象。
2020年4月8日
其他

Android10.0 Binder通信原理(九)-AIDL Binder示例

Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信。为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用(Remote
2020年4月7日
其他

Android10.0 Binder通信原理(八)-Framework层分析

data.recycle();}组装一个Parcel数据,把服务的名称和对象写入Parcel中,然后把它拍扁,服务转成flat_binder_object对象,在Native层为Binder实体。
2020年4月6日
其他

Android10.0 Binder通信原理(七)-Framework binder示例

$(BUILD_JAVA_LIBRARY)#2.编译成serverTest进程,最终放入到/system/bin中,源文件是当前目录下的serverTestinclude
2020年4月5日
其他

Android10.0 Binder通信原理(六)-Binder数据如何完成定向打击

也就是说对于进程间的通信,就是发送端把binder_transaction节点,插入到目标进程或其子线程的todo队列中,等目标进程或线程不断循环地从todo队列中取出数据并进行相应的操作。
2020年4月3日
其他

Android10.0 Binder通信原理(五)-Binder驱动分析

缺点:查找数据时效率低,因为不具随机访问性,所以访问某个位置的数据都要从第一个数据开始访问,然后根据第一个数据保存的下一个数据的地址找到第二个数据,以此类推。要找到第三个人,必须从第一个人开始问起;
2020年4月2日
其他

Android10.0 Binder通信原理(四)-Native-C\\C++实例分析

INTERFACE::asInterface(obj);}这里采用了C++的模板函数,interface_cast其实就是调用了IServiceManager::asInterface(obj);
2020年4月1日
其他

Android10.0 Binder通信原理(三)-ServiceManager篇

这个结构,binder_transaction_data说明了transaction到底在传输什么语义,而语义码就记录在其code成员中。不同语义码需要携带的数据也是不同的,这些数据由data指定.
2020年3月31日
其他

Android10.0 Binder通信原理(二)-Binder入门篇

比如Socket通信ip地址是客户端手动填入的,都可以进行伪造;而Binder机制为每个进程分配了UID/PID来作为鉴别身份的标示,从协议本身就支持对通信双方做身份校检,因而大大提升了安全性。
2020年3月30日
其他

Android10.0 Binder通信原理(一)Binder、HwBinder、VndBinder概要

8.0开始,Android引入了Treble的机制,为了方便Android系统的快速移植、升级,提升系统稳定性,Binder机制被拓展成了"/dev/binder",
2020年3月29日
其他

Android10.0 日志系统分析(四)-selinux、kernel日志在logd中的实现​-[Android取经之路]

启动socket监听后,调用onDataAvailable(),与logd.auditd建立连接,调用recvfrom()接收socket传来的数据,最终调用logPrint把/dev/kmsg
2020年2月12日
其他

Android10.0 日志系统分析(三)-logd、logcat读写日志源码分析-[Android取经之路]

中,当有日志写入logdw时,LogListener()的onDataAvailable生效,先把日志写入LogBufer后,再LogReader的notifyNewLog()来通知有新的日志写入。
2020年2月11日
其他

Android10.0 日志系统分析(二)-logd、logcat架构分析及日志系统初始化-[Android取经之路]

在应用层可以通过android.util.Log,android.util.SLog,android.util.EventLog接口,把日志写入到main,system,event的不同缓冲区中去。
2020年2月10日
其他

Android10.0 日志系统分析(一)-logd、logcat 指令说明、分类和属性-[Android取经之路]

我们在日常调试或者CTS测试时,会遇到日志丢失或者不全的情况,主要原因是日志量很大,但是日志缓冲区很小,此时只要把日志的缓冲区调大即可。
2020年2月9日
其他

Android 10.0 PackageManagerService(四)APK安装流程-[Android取经之路]

如果是替换安装:其主要过程为更新设置,清除原有的某些APP数据,重新生成相关的app数据目录等步骤,同时要区分系统应用替换和非系统应用替换。而安装新包:则直接更新设置,生成APP数据即可。
2020年1月22日
其他

Android 10.0 PackageManagerService(三)APK扫描-[Android取经之路]

//如果读到AndroidManifest.xml中的tag是"application",执行parseBaseApplication()进行解析
2020年1月14日
其他

Android 10.0 PackageManagerService(二)权限扫描-[Android取经之路]

标签:把属性name所描述的权限赋予给标签中属性gid所表示的用户组,一个权限可以有一个或多个group对象,当一个APK授权于这个这个权限时,它同时属于这几个组
2020年1月13日
其他

Android 10.0 PackageManagerService(一)工作原理及启动流程-[Android取经之路]

说明:IPackageManager.Stub是IPackageManager.aidl自动生成的,正好也说明了PKMS是service端的,通过binder交互
2020年1月11日
其他

Android10.0应用进程创建过程以及Zygote的fork流程-[Android取经之路]

Zygote有一个无限循环,一直在等待Socket请求,收到SystemServer发来新的Socket请求后,Zygote调用系统的fork函数来孵化一个新的进程,比如这里的微信。
2020年1月2日
其他

Android10.0系统启动之Launcher(桌面)启动流程-[Android取经之路]

然后通过resolveHomeActivity()从系统所用已安装的引用中,找到一个符合HomeItent的Activity,最终调用startHomeActivity()来启动Activity
2019年12月29日
其他

Android 10.0系统服务之AMS启动流程-「Android取经之路」

由于SystemServer中也运行着一些系统APK,例如framework-res.apk、SettingsProvider.apk等,因此也可以认为SystemServer是一个特殊的应用进程。
2019年12月15日
其他

Android 10.0系统启动之SystemServer进程(二)-「Android取经之路」

说明:启动核心服务BatteryService,UsageStatsService,WebViewUpdateService、BugreportManagerService、GpuService等
2019年12月4日
其他

Android 10.0系统启动之SystemServer进程(一)-「Android取经之路」

当有两个Zygote进程时,需要等待第二个Zygote创建完成。由于fork时会拷贝socket,因此,在fork出system_server进程后,需要关闭Zygote原有的socket
2019年12月3日
其他

Android 10.0系统启动之Zygote进程(四)-「Android取经之路」

通过ZygoteServer创建服务端Socket,预加载类和资源,并通过runSelectLoop函数等待如ActivityManagerService等的请求。
2019年11月21日
其他

Android 10.0系统启动之Zygote进程(三)-「Android取经之路」

上节我们通过JNI调用ZygoteInit的main函数后,Zygote便进入了Java框架层,此前没有任何代码进入过Java框架层,换句换说Zygote开创了Java框架层。
2019年11月20日
其他

Android 10.0系统启动之Zygote进程(二)-「Android取经之路」

start()start()函数主要做了三件事情,一调用startVm开启虚拟机,二调用startReg注册JNI方法,三就是使用JNI把Zygote进程启动起来。
2019年11月18日
其他

Android 10.0系统启动之Zygote进程(一)-「Android取经之路」

zygote完毕大部分工作,接下来再通过startSystemServer(),fork得力帮手system_server进程,也是上层framework的运行载体。
2019年11月17日
其他

Android 10.0系统启动之init进程(四)-「Android取经之路」

代码路径:platform/system/core/property_service.cpp 作用:初始化属性系统,并从指定文件读取属性,并进行SELinux注册,进行属性权限控制
2019年9月10日
其他

Android 10.0系统启动之init进程(三)-「Android取经之路」

keyctl_get_keyring_ID(KEY_SPEC_SESSION_KEYRING,
2019年9月8日
其他

Android系统启动之init进程(二)-「Android取经之路」

Plug),即在系统运行中,当有设备插入USB端口时,ueventd就会接收到这一事件,为插入的设备动态创建设备节点文件。这一类设备节点文件也被称为动态节点文件。
2019年9月7日
其他

Android取经之路——启动篇

http://tianger.github.io/categories/%E8%B7%9F%E6%88%91%E4%B8%80%E8%B5%B7%E5%86%99python/
2019年9月2日
其他

Android系统启动之init进程(一)-「Android取经之路」

当bootloader启动后,启动kernel,kernel启动完后,在用户空间启动init进程,再通过init进程,来读取init.rc中的相关配置,从而来启动其他相关进程以及其他操作。
2019年9月1日
其他

Android是怎么启动的-[Android取经之路]

第六步:zygote同时会启动相关的APP进程,它启动的第一个APP进程为Launcher(UI),然后启动Email,SMS等进程,所有的APP进程都有zygote
2019年8月13日
其他

Android系统架构-[Android取经之路]

该层中包含所有的Android应用程序,包括电话、相机、日历等,我们自己开发的Android应用程序也被安装在这层;大部分的应用使用JAVA开发,现在Google也开始力推kotlin进行开发
2019年8月11日