编译, 提供, APK - 安卓依赖范围
在向Android项目添加新的依赖项时,特别是在有三个范围选项编译/提供/ APK中。Android StudioDependencies
选择每一个有什么影响,我们什么时候应该使用它们 ?除了名字说什么。
编辑:
“正确处理'提供'和'包装'范围,以做他们应该做的事情。提供的'和'包'不能与Android库一起使用,并且会产生错误。这是来自 http://tools.android.com/tech-docs/new-build-system
在向Android项目添加新的依赖项时,特别是在有三个范围选项编译/提供/ APK中。Android StudioDependencies
选择每一个有什么影响,我们什么时候应该使用它们 ?除了名字说什么。
编辑:
“正确处理'提供'和'包装'范围,以做他们应该做的事情。提供的'和'包'不能与Android库一起使用,并且会产生错误。这是来自 http://tools.android.com/tech-docs/new-build-system
provided- 仅编译时依赖项package- 仅包时间依赖关系compile- 编译时和包时依赖关系provided通常用于基于注释处理的库。通常,这些库分为两个工件 - “注释”和“编译器”。“编译器”是依赖关系,因为你不需要在应用程序中使用它,只需要编译;“注释”是依赖关系 - 它在应用程序代码中使用,因此可以编译。或者生成的代码可能需要其他依赖项,而您的应用程序可能不需要。例如,匕首依赖关系配置:providedcompile
compile 'com.squareup.dagger:dagger:1.2.2'
provided 'com.squareup.dagger:dagger-compiler:1.2.2'
这些属性来自 maven 作用域。
它们只是指示如何在构建过程的每个步骤中处理特定的依赖项。
compile- 默认方法,它只是意味着所有依赖项都应该在编译时可用。编译依赖项在项目的所有类路径中都可用。此外,这些依赖项将传播到依赖项目。在运行时通常需要编译时依赖项。
package- 声明用于构建应用程序的其他配置。您可以列出向构建过程添加其他功能的插件。
provided- 这意味着运行时环境包含这些依赖项。例如,当您查看库内部时,您将在每个方法主体中看到。android.jarjava.lang.RuntimeException: Stub!
provided并且不能与安卓库一起使用,并且会生成错误。package
下面是这样的:sourceSet

有关生成系统的详细信息:https://www.youtube.com/watch?v=LCJAgPkpmR0
一篇关于Gradle的精彩文章:http://www.sinking.in/blog/provided-scope-in-gradle/