安卓Application层通常想访问framework层代码,通常需要跨进程通信
举个例子,比如framework层的某自研feature杜比音效,如何把接口暴露给系统的设置apk,这个就可以直接使用aidl在framework层做server,在需要调用的地方做client以便于调用
这中间的技术就是使用了IPC通信,可以实现跨进程通信,最常使用的是handle、aidl
1、bundle(广播、handlemessage)
这个无需多讲,apk之间通过广播,handle都可以较为简单的实现通信
2、反射:(类必须加载至JVM同一区域,通常无法跨进程,import进来的SDK jar包属于同区域)
对于apk而言,我们可以直接反射三方依赖的库或者sdk带的android.jar,这是最常反射的地方
其次手机在编译版本时也会将一些自研类库打包在system/framework , system_ext/目录下,如果条件允许的话,我们也可以ClassLoader这些jar包进来,然后直接反射调用
Class clazz = Class.forName(