gradle常用的依赖相关的关键字有compile、api、implementation、provided、compileOny、annotationProcessor等

一、关键字说明

https://www.jianshu.com/p/9db6eaae2829

为便于下面的描述,假如app依赖mylibrary1,mylibrary1依赖mylibrary2。

implementation:gradle3.0推出来的依赖关键字,依赖项的一切类和文件只对当前module可见。此关键字的好处:

1. 加快编译速度。2. 隐藏对外不必要的接口。

api(原compile):两者作用一样, 依赖项对依赖当前module的module可见。

compileOnly( 原provided ) :两者作用一样, 只在编译时有效,不会参与打包 。
比如一些编译时注解库androidx.annotation就可以使用此关键字。

annotationProcessor:专门用于执行自定义注解解析器

testCompile(testImplementation): 只在单元测试代码的编译以及最终打包测试apk时有效。

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

releaseCompile(releaseImplementation):仅仅针对 Release 模式的编译和最终的 Release apk 打包。

apk(runtimeOnly):只在生成apk的时候参与打包,编译时不会参与,很少用。

二、打包

即使 mylibrary1 使用api依赖 mylibrary2,在 mylibrary1打成jar或者aar之后,apk运行时会报找不到mylibrary2的类。gradle打包时不会将嵌套的依赖打入jar

要么将 mylibrary2 也做成jar供app依赖,要么在 mylibrary1 使用fat-aar插件(com.kezong:fat-aar)依赖mylibrary2 。

三、Library的引入方式

https://www.jianshu.com/p/9db6eaae2829


0 条评论

发表回复

您的电子邮箱地址不会被公开。