在Gradle中编写依赖项的各种方式有什么区别?

时间:2018-12-21 15:52:14

标签: android android-gradle

我已经看到了以下几种在Gradle中编写依赖项的方式:

implementation("com.squareup.okhttp3:okhttp:3.12.0")

implementation 'com.squareup.okhttp3:okhttp:3.12.0'

compile 'com.squareup.okhttp3:okhttp:3.12.0'

他们是用不同的方式完成同一件事还是彼此之间有差异?

2 个答案:

答案 0 :(得分:3)

build.gradle文件只是Groovy脚本。所以它的语法在这里适用

在Groovy中,您可以在调用函数时忽略括号,因此

implementation 'com.squareup.okhttp3:okhttp:3.12.0'

实际上等于

implementation('com.squareup.okhttp3:okhttp:3.12.0')

在Groovy中,您还具有"表示的GStrings。它们包含嵌入式String。在这种情况下,您不会插值任何值,所以

implementation 'com.squareup.okhttp3:okhttp:3.12.0'

implementation "com.squareup.okhttp3:okhttp:3.12.0"

是等效的。请注意,如果您想插值一些值,那么您就可以这样做

implementation "com.squareup.okhttp3:okhttp:$okhttpVersion" // this line works
implementation 'com.squareup.okhttp3:okhttp:$okhttpVersion' // this line doesn't work
不推荐使用

compile方法定义依赖项,而推荐使用implementationapi。您可以找到更多信息here。您可以考虑,如果以某种方式公开依赖项的类,那么您将使用api,但是如果在内部使用依赖项,则implementation很好

答案 1 :(得分:0)

compile配置已被弃用,并由implementationapi取代。