新手写AIDL构建失败:...aidl.exe'' finished with non-zero exit value 1
最近学习aidl,写demo后编译报错,跟着《Android开发艺术探索》以及网上的一些aidl详解博客敲完后一直编译不过,错误日志如下:
Process 'command 'C:\Users\DELL\AppData\Local\Android\Sdk\build-tools\27.0.3\aidl.exe'' finished with non-zero exit value 1
打开详细错误后很多,但也没有有效信息:
Caused by: org.gradle.process.internal.ExecException: Process 'command 'C:\Users\DELL\AppData\Local\Android\Sdk\build-tools\27.0.3\aidl.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:\usr\project\Aidl\app\src\main\aidl\com\niiwoo\aidl\aidl\Book.aidl:7: syntax error
C:\usr\project\Aidl\app\src\main\aidl\com\niiwoo\aidl\aidl\Book.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的更多相关文章
- jenkins持续集成源码管理选项为None,构建失败找不到git.exe解决办法
我的jenkins版本为Jenkins ver. 2.19.1 1.源码管理选项只有None的解决办法: 在插件管理中心,搜索对应的源码管理插件这里以git为例,搜索git plugin点击右下角的安 ...
- aidl.exe'' finished with non-zero exit value 1问题解决【转载】
PS:Android Studio用AIDL时,碰到一个非常棘手的问题,但是百度之,压根非法解决,FQ出去,终于找到了一篇解决问题的文章,特地转载之. 之前使用aidl传递的都是基本的数据类型比如in ...
- [已解决] 含gorm、sqlite3包的go程序构建失败 C:\Program Files\Go\pkg\tool\windows_amd64\link.exe: running gcc failed: exit status 1
gorm官方文档教程实例,构建出现错误.C:\Program Files\Go\pkg\tool\windows_amd64\link.exe: running gcc failed: exit st ...
- AIDL/IPC Android AIDL/IPC 进程通信机制——超具体解说及使用方法案例剖析(播放器)
首先引申下AIDL.什么是AIDL呢?IPC? ------ Designing a Remote Interface Using AIDL 通常情况下,我们在同一进程内会使用Binder.Broad ...
- (转)Python新手写出漂亮的爬虫代码2——从json获取信息
https://blog.csdn.net/weixin_36604953/article/details/78592943 Python新手写出漂亮的爬虫代码2——从json获取信息好久没有写关于爬 ...
- (转)Python新手写出漂亮的爬虫代码1——从html获取信息
https://blog.csdn.net/weixin_36604953/article/details/78156605 Python新手写出漂亮的爬虫代码1初到大数据学习圈子的同学可能对爬虫都有 ...
- Jenkins拾遗--第四篇-适当的让构建失败
问题的引出: 有一段我们的前端构建总会现git上分支名称中的版本号和工程里的版本号不一致的问题:这样会导致构一个问题:构建后的产品名称叫做1.1,但是进入app的关于页面,看到的版本还是1.0.这会让 ...
- Android Stduio 发生 Process 'command 'somePath:java.exe'' finished with non-zero exit value 2 异常的解决办法
有时你会发现,在你使用Android Studio 进行编译的时候提示: Error:Execution failed for task ':demo:dexDebug'.> com.andro ...
- Process 'command 'D:\jdk8\jdk\bin\java.exe'' finished with non-zero exit value 2
转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/10539006.html 捣鼓了好久,现在已经不想说话,为何会出现这个问题,Process 'comman ...
随机推荐
- ES6学习之Async函数
定义:Async函数是一个异步操作函数,本质上,Async函数是Generator函数的语法糖.async函数就是将 Generator 函数的星号(*)替换成async,将yield替换成await ...
- Android 使用技巧
1.Android 模拟器使用虚拟SD卡 首先创建一个虚拟的SD卡 mksdcard 500M ~/sdcard.img 启动模拟器的时候指定虚拟的SD卡 emulator -sdcard ~/sdc ...
- Struts2 配置项
基础Constants struts.devMode 可选值true,false (默认false),在开发模式下,struts2的动态重新加载配置和资源文件的功能会默认生效.同时开发模式下也会提供 ...
- SpringMVC 学习笔记(请求方法的返回值和参数)
在用注解对配置 处理器时,一般是一个方法处理一个请求,不同方法的返回类型有着不同的意义. 返回值为 ModelAndView 类型 ModelAndView 是Model 和 View 的一个集合类型 ...
- Shrio00 Shiro认证登录、权限管理环境搭建
基础环境准备: JDK -> java version "1.8.0_101" MAVEN -> Apache Maven 3.5.0 1 导入依赖 mysql驱动 m ...
- ubuntu server usb安装盘制作问题
本来服务器上装的是windows server 2003,开多个虚拟机装linux来用,但发现不管是vmware还是virtualbox,总是有内存泄漏,大约2个星期左右16G内存就全没了,任务管理器 ...
- R: 关于 table 函数的应用
################################################### 问题:关于 table 函数 18.5.9 来一个关于 table 函数的例子,说明tabl ...
- hbase各种遍历查询shell语句 包含过滤组合条件
import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Li ...
- hdu1057
#include <iostream> #include <string> #include <cstring> using namespace std; int ...
- sqlserver2012——SqlCommand创建对象的三种方法
1.使用不带参构造函数 SqlCommand cmd = new SqlCommand(); cmd.Connection = SqlConnnection对象: cmd.CommandText=Sq ...