aidl打包到aar的玩法(推荐)
两个project
AidlAarServer以及AidlAarClient
1.新建项目AidlAarServer
2.File---New---AIDL---AIDL File,aidl文件修改好后,build下project。然后发现在app---build---generated---source---aidl---debug---com.potter.aidlaarserver下生成了IMyAidlInterface.java
3.创建一个MyService,继承于Service,并且把这个servcie注册在AndroidManifest.xml
4.新建Module---AidlAar,选择类型Android Library,这里要注意一点,我开始以为要把包名填写的和AidlJarServer的包名要一致,其实不一致也行。
5.把AidlJarServer的app---src---main---aidl这个目录拷贝到AidlAar的src---main下,build一下,然后发现在AidlAar---build---generated---source---aidl---debug---com.potter.aidlserver下生成了IMyAidlInterface.java。同时生成Aar包在AarLib----build----outputs---aar----aidlaar-release.aar
6.新建项目AidlAarClient
7. 新建一个Module,选择Import .Jar/.AAR Package,选好路径导入aar包(aidlaar-release.aar
),然后再去File---Project Structure---Dependencies点+号,选择Moduel Dependency。
8. 在AidlAarClient的代码里面bindService配合ServiceConnection拿到ImyAidlInterface的实例去调用api就ok了。
aidl打包到aar的玩法并封装Manager类(推荐)
提供了demo仅供参考,因为单纯aidl打成aar,第三方apk导入后还要自己去bindService之类的操作,我们可以封装起来,客户那边直接通过Manager类去调用我们提供的api就可以了。(这种感觉就有点像如android 系统里面的AudioManager,PackageManager的用法,例如AudioManager各种暴露的方法也都是通过aidl去调用的AudioManagerService的对应方法)
网友评论