新手寫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

搜索網上的各種答案,常見原因如下:

  1. Java文件跟aidl文件報名不一致;
  2. aidl中沒有顯示引用數據對象類;
  3. aidl中沒有描述數據對象類的in、out、inout標志;
  4. 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生成的,數據對象類還是需要刪除的。記錄一下,希望對遇到同樣問題的兄弟有一些幫助。
如有錯誤,歡迎留言指正!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM