Android进程间通信AIDL踩过的坑

前言

Android中使用AIDL传String值,没有问题,当我想传个对象时,却一直报错,迟迟不能解决,网上翻了很多资料也没能找到,下面就把我自己解决的方法,分享出来,当然从其他博客中,也学到了很多知识。

问题一

Process ‘command ‘XXX\android-sdk-windows\build-tools\27.0.3\aidl.exe’’ finished with non-zero exit value 1
试了网上的很多方法,一直不能解决,搞得自己都要放弃了,最后一行一行代码的去添加,看到底是哪里出了问题,最终将问题定位到在aidl文件中,将对象从客户端传到服务端出错,在网上下了一个,可以正常运行的Demo,经过仔细对比发现,在这里传对象时,需要在类前面添加inout,否则就会报此错误。

问题二

解决了第一个问题之后,再次运行代码发现,还是有错误,说自己声明的类,找不到,Android aidl 找不到符号类,又经过一番查找资料,最终是参考了参考,发现需要在build.gradle文件的android{}里添加以下代码
sourceSets {
main {
manifest.srcFile ‘src/main/AndroidManifest.xml’
java.srcDirs = [‘src/main/java’, ‘src/main/aidl’]
resources.srcDirs = [‘src/main/java’, ‘src/main/aidl’]
aidl.srcDirs = [‘src/main/aidl’]
res.srcDirs = [‘src/main/res’]
assets.srcDirs = [‘src/main/assets’]
}
}

还有找不到 找不到符号 方法 readFromParcel,参考,修改正确。

注意事项:

  1. 要传的Java类是在aidl文件夹的包下创建。
  2. 需要重新创建一个aidl文件用来声明此类,才可以进行传递。
  3. 可以直接在java文件夹下面创建aidl文件,系统会自动生成aidl文件夹。
  • 希望以上内容,可以帮助的某些人

参考博客

参考1

你可能感兴趣的:(Android踩过的坑)