use*_*552 2 android android-library build.gradle android-gradle-plugin
我想知道为 Android 库项目定义构建脚本存储库和依赖项的最佳/预期方法是什么。
在野外(如 Github),大多数存储库都在 build.gradle 中定义了以下内容
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
} }
Run Code Online (Sandbox Code Playgroud)
但是,如果我在 Android Studio 中创建一个库项目,则不会创建此 buildscript 块,因为它已经在根 build.gradle 文件中,因此没有必要(我假设)。
那么正确的方法是什么,只在根 build.gradle 或每个库项目中定义一次(这也意味着在新插件版本的情况下更新每个库的版本号)。或者这取决于我是否想独立于我的主应用程序发布该库?
如果您正在开发一个库,则实际上并不存在顶级build.gradle:该顶级适用于多模块项目中的所有模块,但库最好作为独立的单个模块实现。
最佳实践可能是为您的库模块创建一个build.gradle文件,并buildscript
在其中包含一个带有存储库和 Android 插件 Gradle 版本的块。这样它就可以更好地独立,并且它不会隐式依赖于具有顶级 build.gradle 文件的项目。
然而,有一个巨大的警告,这会导致很多这样的问题——如果你buildscript
在一个具有顶级build.gradle和竞争buildscript
块的项目中包含这个模块及其自己的块,即顶级构建文件将获胜,它将忽略模块中的块。
这可能不是什么大问题,但是如果您的模块依赖于特定版本的 Android Gradle 插件,例如,并且它位于使用不同版本插件的项目中,那么您的模块将会丢失,并且它会丢失。可能会遇到问题。另一种说法是,它只能对单个构建中的所有模块使用一个版本的插件,并且我相信第一个指定它的插件会为每个人设置它。
实际上,只有当您依赖 Android Gradle 插件 1.0 以后版本特定的某些功能,并且该功能包含在使用 1.0 的项目中时,这才可能成为问题。
这里有一些微妙之处,我会提到,但不会回答(我很抱歉用更多的问题回答你的问题)——如果其他人确实知道,请自己回答,或者编辑我的答案,或者在评论:
buildscript
块向类路径添加新插件怎么办?它们是被添加还是被忽略?buildscript
块将新存储库添加到搜索路径怎么办?他们会被接走吗? 归档时间: |
|
查看次数: |
1874 次 |
最近记录: |