升级至SDK 29与Build Tools 29.0.0后AIDL编译报错求助
你碰到的这个问题是Build Tools 29.0.0里的AIDL工具在Windows系统下的路径解析兼容性bug,不是你的项目配置或者其他依赖出了问题,具体原因和解决办法如下:
问题根源
Build Tools 29.0.0的aidl.exe在处理Windows绝对路径时,会错误地重复解析盘符(比如把E:\...的路径解析成out\E::这种无效格式),导致无法创建合法的输出目录,从而抛出Invalid argument错误并以非零码退出。而Build Tools 28.0.3的AIDL工具没有这个路径解析问题,所以手动执行能正常编译。
可行解决方案
临时降级Build Tools(最快解决):
保持compileSdkVersion 29不变,只在模块的build.gradle里把Build Tools版本回退到28.0.3:android { compileSdkVersion 29 buildToolsVersion "28.0.3" // 其他配置... }这样既能使用Android 10(SDK29)的API,又能避开AIDL工具的bug。
升级到修复后的Build Tools版本:
Google在Build Tools 29.0.1及后续版本中修复了这个路径解析问题。你可以打开Android Studio的SDK Manager,在SDK Tools标签下找到Android Build Tools,勾选29.0.1或更高版本(比如29.0.3)进行安装,然后修改build.gradle中的buildToolsVersion为对应的版本即可。尝试调整项目路径(备选):
虽然不是根本解决办法,但可以尝试把项目移动到没有空格、特殊字符的路径下(比如从E:\Work\McDevelopment\android-sales-app-webview改成E:\Projects\SalesApp),避免路径解析时出现异常。
内容的提问来源于stack exchange,提问作者Marcel

