在Android系统中将AIDL功能集成到framework.jar中

上一篇文章实现了AIDL在packages/apps目录编译成jar包供应用层的服务端跟客户端使用,具体参考《在Android系统中实现AIDL功能 》。仍然使用《 在Android系统中实现AIDL功能 》中的SimpleJar项目,目录结构如下:

gunder@gunder:/mnt/hgfs/ubuntuShare/aidl/SimpleJar$ tree
.
├── Android.mk
└── src
    └── com
        └── china
            └── jar
                ├── IVoiceClientInterface.aidl
                └── VoiceManager.java

 1、需要将Android.mk去掉,将src文件夹重命名为java,然后将项目放到frameworks/base目录下,结构如下:

ganhailin@ubuntu-MX8:~/IMX8_beta/frameworks/base/SimpleJar$ tree
.
└── java
    └── com
        └── china
            └── jar
                ├── IVoiceClientInterface.aidl
                └── VoiceManager.java

2、将IVoiceClientInterface.aidl添加到frameworks/base/Android.mk文件中的LOCAL_SRC_FILES += 变量中。如下:

在Android系统中将AIDL功能集成到framework.jar中_第1张图片

将 SimpleJar项目添加到build/make/core/pathmap.mk文件中,这样系统才会编译该项目。如下:

在Android系统中将AIDL功能集成到framework.jar中_第2张图片

 3、编译framework项目,会生成out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar,将classes.jar重新命名为framework.jar,并且导入Android Studio中查看如下:

在Android系统中将AIDL功能集成到framework.jar中_第3张图片

可以看到framework.jar中多了china.jar模块,里面有IVoiceClientInterface跟VoiceManager。到这里就完成了将AIDL添加到framework.jar中的操作。

 
 
 

 

 

你可能感兴趣的:(android,AIDL)