Android进程间通信AIDL踩过的坑

本文介绍了在Android中使用AIDL遇到的两个主要问题:1. 使用AIDL传递对象时,需要在aidl文件中添加inout关键字以避免编译错误;2. 解决aidl找不到自定义类和readFromParcel方法的问题,需在build.gradle配置源代码路径。通过详细步骤和注意事项,帮助开发者成功实现进程间通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值