在 gradle 3.0 之后,默认的依赖由之前的 compile 更改为 implementation 或者 api 来引用。在 3.0 之前的版本使用 compile 依赖第三方库。

implementation:该依赖方式所依赖的库不会传递,只会在当前 module 中生效。
api:和 2.x版本的 compile完全相同,该依赖方式会传递所依赖的库,当其他 module 依赖了该 module 时,可以使用该 module下使用 api 依赖的库。

当我们依赖一些第三方的库时,可能会遇到 com.android.support 冲突的问题,就是因为开发者使用的 compile 或 api 依赖的 com.android.support 包与我们本地所依赖的 com.android.support 包版本不一样,所以就会报 All com.android.support libraries must use the exact same version specification 这个错误。

每日一问的答案中可能无法全完解读这个问题,如果您是相关技术专家或者是对本问题有自己的见解,欢迎带着「批判性」的态度阅读,指正其中的不足。