AIDL

Android Studio中aidl文件的存放规则

2017-08-05  本文已影响0人  ei_chinn

作为一个普通的烂大街的Android开发,实际开发中是一次也没有用过AIDL进行进程间通信。只是在刚学习Android的时候按照教材依样画葫芦的“使用”了一下,那时还是用Eclipse的。今天想着在Android Studio上也“使用”一下,结果系统会自动生成的java接口文件死活生成不出来。作为一个不百度/谷歌就不会开发的Android开发,当然是马上就去搜索了一番,折腾了好一阵子,最终总结出了在Android Studio中aidl文件的存放规则,不知道是否完全正确,还有就是:没有原因,不讲原理,因为我也不知道。。。反正期望的java文件是生成出来了。
首先,在Android Studio中,所有的aidl文件都要独立的存放在aidl文件夹中,aidl文件夹与java、res、assets等文件夹同级。

其次,aidl文件夹下必须有个package(或者叫文件夹?目录结构?),其结构要和AndroidManifest.xml文件中声明的package的值一致(其实java文件夹下也有同样的一个package)。所有的aidl文件都得放到这个package(为了描述方便,后面都使用“packageName”来指代这个package)下。


接着,我们使用AIDL进行进程间通信时,一般(教材说的)都会写一个实现了Parcelable接口的实体类(为了描述方便,后面都使用“实体类”来指代)和这个实体类所对应的aidl文件(为了描述方便,后面都使用“实体类aidl文件”来指代)还有一个可操作该实体类的接口类的aidl文件(为了描述方便,后面都使用“接口aidl文件”来指代)。“实体类”就是放在java文件夹下面这个没什么好说的了,下面就说一下“实体类aidl文件”和“接口aidl文件”这个两个文件的存放规则
先说“实体类aidl文件”,这个文件在aidl文件夹的存放路径必须和“实体类”文件在java文件夹中的存放路径一样。例如“实体类”在java文件夹中的存放路径是packageName.entity,则在aidl文件夹中的存放路径也必须是packageName.entity,否则会报“couldn't find import for class...”的错误。


而对于“接口aidl文件”就是只要放到“packageName”这个package下就行了,既可以跟“实体类aidl文件”同一个目录,也可以放到“packageName”这个package下的任意目录。推荐是放到跟“实体类aidl文件”同一个目录下。


各个aidl文件存放到正确的位置,而且aidl文件内容正确无误的话,只要rebuild一下,系统就会自动的在build/generated/source/aidl/debug/packageName下生成“接口aidl文件”对应的java文件了。
总结一下,在Android Studio中,所有的aidl文件都存放在与java、res等文件夹同级的aidl文件夹中,aidl文件夹下要有一个与packageName相同的package。“实体类aidl文件”在aidl文件夹的存放路径必须和“实体类”文件在java文件夹中的存放路径一样。而“接口aidl文件”则推荐是跟“实体类aidl文件”存放在同一个目录中。

上一篇下一篇

猜你喜欢

热点阅读