我试图了解存储库中的存储库。我已经阅读了很多解释它的帖子,但我仍然觉得我没有理解这个概念。这是项目build.gradle:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
// repositories {
// jcenter()
// maven {
// url 'https://maven.google.com/'
// name 'Google'
// }
// }
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
}
}
allprojects {
repositories {
jcenter()
maven {
url "https://jitpack.io"
}
google()
}
}
您可以看到我在buildscript中注释了存储库。该应用程序构建完美,发布没有任何问题。谁能对此有所了解?也许需要在buildscript中显示存储库的示例将帮助我最终理解它。
答案 0 :(得分:1)
经过反复试验,即使repositories
块被注释掉,Android Studio也会在编译和构建时提供插件或至少插件源。这很可能是因为它与Gradle的高度集成。但是,当使用gradlew assembleDebug
或类似的东西从命令行构建时,Gradle包装器将抛出以下错误:
“无法解决外部依赖关系 com.android.tools.build:gradle:3.0.1因为没有存储库 定义的“。
为了清楚地进一步解释这些概念,repositories
下的buildscript
定义了下载编译Gradle项目时使用的插件的来源。例如,通过定义包含它的repo(在本例中为Google maven)并为buildscript添加依赖项com.android.tools.build:gradle:3.0.1
来下载Android Gradle插件。因此,通过这样做,您将能够在app模块apply plugin: 'com.android.application'
文件中添加build.gradle
插件。这还与您的代码库无关,这只是与构建系统有关,以便使用具有工具和额外任务的插件来编译项目Projects,以便正确编译它们。
如果您在buildscript
块下方实现,则会有allprojects
块,其中指出了用于处理项目依赖性的存储库。这意味着您在应用程序中使用的库(也在app dependencies
文件中的build.gradle
块内)将从那里检索,在这种情况下,它们来自JCenter,JitPack.io和Google Maven