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 。
0 条评论