如图,通过
View | Tool Windows | Gradle | Run Gradle Task
这种方式执行的任意Gradle命令,输出都会出现在
View | Tool Windows | Run
。
同时,用这种方式执行过的gradle命令,idea会创建一个
Run Configurations
,后续点击
Run
按钮执行这个的输出也还在同样的位置。
执行Android的Run Configurations就会出现在这个Panel。特别的是,IDE的Sync过程的输出,会在
View | Tool Windows | Build | Sync
,
其他的输出都在
View | Tool Windows | Build | Build Output
。
Android Studio有个傻缺行为是,执行任何Gradle的任务之后,都会附带一次自动的Sync操作。所以Studio会主动跳到
View | Tool Windows | Build | Sync
窗口。
你必须注意,如之前所说,如果你是通过 link::通过
View | Tool Windows | Gradle | Run Gradle Task
执行的[Run Gradle Task]调用的gradle,它的输出不会出现在这个窗口。
这类问题,因为都是由Gradle调用的外部程序发现的(如javac,aapt,dex,proguard),所以最后的Exception不会包含任何有用信息。
请不要只看最后的异常,
你需要往前翻日志来发现问题
。 javac,aapt,dex,proguard等外部程序往往会将错误信息以ERROR级别输出到日志。
与很多人的常识相反的事,这类问题你应该尽可能的关闭Gradle的日志输出,而不是让gradle输入更详细的日志。如果你开启了
--info
参数,你应该删掉这个参数;你甚至可以使用
--quiet
参数来关闭任何干扰输出(ERROR级别在quiet也会输出)来定位问题。
使用
--info
之后的输出日志一般能达到数MB,你能在这么多信息里找到一行毫不起眼的aapt的错误信息吗?
Gradle Plugin问题或Gradle Bug
另一类问题是由于一些Gradle Plugin自身错误引起,有可能是build.gradle中配置的问题,也可能是plugin的bug。这类问题正好与前一节项目源码的问题相反。
定位问题的原因往往需要关注最后的Exception,如果Exception缺乏信息,就需要使用 '--info' 甚至 '--debug' 开启更详细的日志输出。
使用
--stacktrace
等参数
在使用
View | Tool Windows | Gradle | Run Gradle Task
执行的时候,你是可以直接增加参数
--stacktrace
的,最后输出的信息就会有出错栈信息。
但是对 下图的这种,以及 Sync,是不奏效的。
你如果想这种情况也有栈信息,需要在 link::jetbrains://idea/settings?name=Build%2C+Execution%2C+Deployment—Compiler[
Preferences | Build, Execution, Deployment | Compiler
] 中增加参数。只有这里的是对Sync以及Android Build Configurations生效的。