android – Gradle依赖配置:实现vs api vs runonly vs compileonly
作者:互联网
无法理解Android Studio 3.0中引入的最新gradle依赖配置,即implementation,api,compileonly和runtimeonly.
解决方法:
请参考android开发者官方网站上的链接:Android Studio 3.0 New Gradle Configuration.
根据上面链接中提到的描述:
- Implementation: When your module configures an implementation dependency, it’s letting Gradle know that the module does not want to
leak the dependency to other modules at compile time. That is, the
dependency is available to other modules only at runtime. Using this
dependency configuration instead of api or compile can result in
significant build time improvements because it reduces the amount of
projects that the build system needs to recompile. For example, if an
implementation dependency changes its API, Gradle recompiles only that
dependency and the modules that directly depend on it. Most app and
test modules should use this configuration.- api: When a module includes an api dependency, it’s letting Gradle know that the module wants to transitively export that
dependency to other modules, so that it’s available to them at both
runtime and compile time. This configuration behaves just like compile
(which is now deprecated), and you should typically use this only in
library modules. That’s because, if an api dependency changes its
external API, Gradle recompiles all modules that have access to that
dependency at compile time. So, having a large number of api
dependencies can significantly increase build times. Unless you want
to expose a dependency’s API to a separate test module, app modules
should instead use implementation dependencies.- compileOnly: Gradle adds the dependency to the compilation classpath only (it is not added to the build output). This is useful
when you’re creating an Android library module and you need the
dependency during compilation, but it’s optional to have present at
runtime. That is, if you use this configuration, then your library
module must include a runtime condition to check whether the
dependency is available, and then gracefully change its behavior so it
can still function if it’s not provided. This helps reduce the size of
the final APK by not adding transient dependencies that aren’t
critical. This configuration behaves just like provided (which is now
deprecated).- runtimeonly: Gradle adds the dependency to the build output only, for use during runtime. That is, it is not added to the compile
classpath. This configuration behaves just like apk (which is now
deprecated).
标签:android-studio-3-0,android,gradle 来源: https://codeday.me/bug/20191006/1862902.html