Android gradle编译指令(implementation、api、provided 等)

Android Studio 3.0 开始废弃(obsolete)了很多原有的指令,并使用新的指令来代替它们。目的是为了加快编译构建的速度。

新旧指令对比

Android Studio 2.X Android Studio 3.X
apk runtimeOnly
provided compileOnly
compile api
implementation
debugCompile debugImplementation
releaseCompile releaseImplementation
testCompile testImplementation
androidTestCompile androidTestImplementation

Android Studio 3.X 的依赖关系
Android gradle编译指令(implementation、api、provided 等)_第1张图片

  • Unit Test implementation 输出为 testImplementation

  • Test implementation 输出为 androidTestImplementation

apk & runtimeOnly

只在生成apk的时候参与打包,编译时不会参与

provided & compileOnly

provided只提供编译支持,但是不会写入apk。使用provide可以避免支持包版本冲突。

例如:

客户提供了一个接口文档,所有厂商都必须按这份接口文档做。做好之后不要将这份公共的接口 jar 包打包进去。这时候就可以这种依赖方式了。

compile & api、implementation

compile 是和 api 对应的,两者效果相同。
api 与 implementation 的区别在于对外的可见性。

例如:

A api B,B api C
那么 A 模块不仅可以引用 B 模块,还可以引用 C 模块的接口和类。

A implementation B,B implementation C
那么 A 模块只能引用 B 模块的接口和类,不能引用 C 模块,也就是说 C 对于 A 是不可见的。这样做的好处是提高了编译和链接的速度。

testCompile(testImplementation)

testCompile 只在单元测试代码时有效。

debugCompile(debugImplementation)

debugCompile 只在debug模式的编译和最终的debug apk打包时有效

releaseCompile(releaseImplementation)

Release compile 仅仅针对Release 模式的编译和最终的Release apk打包。

你可能感兴趣的:(#,Android,Gradle)