无法理解 gradle
中引入的最新Android Studio 3.0
依赖项配置,即实现,api,compileonly和runtimeonly。
答案 0 :(得分:7)
请参阅Android开发者官方网站上提供的链接:Android Studio 3.0 New Gradle Configuration。
基于上述链接中提到的描述:
- 实施:当您的模块配置实施依赖项时,它让Gradle知道模块不想要 在编译时将依赖项泄漏给其他模块。那就是 依赖性仅在运行时可用于其他模块。用这个 可以导致依赖配置而不是api或编译 显着的构建时间改进,因为它减少了数量 构建系统需要重新编译的项目。例如,如果是 实现依赖项更改其API,Gradle只重新编译它 依赖关系和直接依赖它的模块。大多数应用和 测试模块应使用此配置。
- api:当模块包含api依赖项时,它让Gradle知道模块想要传递导出 依赖于其他模块,以便它们可以在两个模块上使用 运行时和编译时。此配置的行为与编译类似 (现已弃用),您通常只应在此处使用此功能 图书馆模块。这是因为,如果api依赖性改变了它 外部API,Gradle重新编译所有有权访问它的模块 编译时的依赖。所以,拥有大量的api 依赖关系可以显着增加构建时间。除非你想要 将依赖关系的API公开给单独的测试模块app模块 应改为使用实现依赖。
- compileOnly: Gradle仅将依赖项添加到编译类路径中(它不会添加到构建输出中)。这很有用 当您创建Android库模块并且需要时 编译期间的依赖关系,但它可以选择出现在 运行。也就是说,如果您使用此配置,那么您的库 模块必须包含一个运行时条件来检查是否 依赖是可用的,然后优雅地改变它的行为 如果没有提供,它仍然可以运作。这有助于减小尺寸 通过不添加不是瞬态依赖的最终APK 危急。此配置的行为与提供的一样(现在就是这样) 建议使用)。
- runtimeonly: Gradle仅将依赖项添加到构建输出,以便在运行时使用。也就是说,它没有添加到编译中 类路径。此配置的行为就像apk(现在是这样) 建议使用)。