新手写AIDL构建失败:...aidl.exe'' finished with non-zero exit value 1
Posted zhangzhonghao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新手写AIDL构建失败:...aidl.exe'' finished with non-zero exit value 1相关的知识,希望对你有一定的参考价值。
最近学习aidl,写demo后编译报错,跟着《android开发艺术探索》以及网上的一些aidl详解博客敲完后一直编译不过,错误日志如下:
Process ‘command ‘C:UsersDELLAppDataLocalAndroidSdkuild-tools27.0.3aidl.exe‘‘ finished with non-zero exit value 1
打开详细错误后很多,但也没有有效信息:
Caused by: org.gradle.process.internal.ExecException: Process ‘command ‘C:UsersDELLAppDataLocalAndroidSdkuild-tools27.0.3aidl.exe‘‘ finished with non-zero exit value 1
at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:382)
at com.android.build.gradle.internal.process.GradleProcessResult.assertNormalExitValue(GradleProcessResult.java:46)
... 130 more
搜索网上的各种答案,常见原因如下:
- Java文件跟aidl文件报名不一致;
- aidl中没有显示引用数据对象类;
- aidl中没有描述数据对象类的in、out、inout标志;
- window默认aidl空格符为cr,aidl解析器用的是crlf,所以无法解析(改原因可能是早期的缺陷,现在的Android studio默认就是crlf)
上述的一个个试了后都没有解决,最后通过gradlew compileDebugSource --stacktrace -info打印构建log后发现有异常日志:
C:usrprojectAidlappsrcmainaidlcom
iiwooaidlaidlBook.aidl:7: syntax error
C:usrprojectAidlappsrcmainaidlcom
iiwooaidlaidlBook.aidl:7: syntax error don‘t know what to do with "interface"
在创建数据对象类Book.aidl时,Androidstudio默认创建了一个接口:
interface Book {
...
}
我看的教程中对这个接口的描述是“可以删除”,所以就以为可删可不删,最后删除后就可以编译了。
考虑到aidl的性质,默认创建的接口应该是控制类aidl生成的,数据对象类还是需要删除的。记录一下,希望对遇到同样问题的兄弟有一些帮助。
如有错误,欢迎留言指正!
以上是关于新手写AIDL构建失败:...aidl.exe'' finished with non-zero exit value 1的主要内容,如果未能解决你的问题,请参考以下文章
安卓aidl.exe E 10744 10584 io_delegate.cpp:102] Error while creating directories: Invalid argument