我的组织维护着自己的库和工具库,用于构建项目。只有在组织的授权成员手动审查后,新项目才会添加到此存储库。这意味着在我们的 android 项目中,我们从我们的 gradle 构建脚本中删除了 Maven Central、JCenter 等。该组织维护的存储库是唯一用于在构建服务器上构建版本的存储库,应该是开发人员在他们自己的机器上生成该项目的开发构建的唯一存储库。
但是,即使顶级构建脚本看起来像这样(注意:没有存储库):
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
allprojects {
}
task clean(type: Delete) {
delete rootProject.buildDir
}
即使在从终端调用 gradlew 时它失败了(它应该如此),但从 Android Studio 运行时该项目仍会构建。显然 Android Studio 仍在引用其自己的内置存储库(位于 [Android Install]/gradle/m2repository/)。这会导致开发人员无意中破坏构建的不良情况,因为他们一直在引用不在组织存储库中但在 Android Studio 内置存储库中的项目。与其尝试强制每个人在每次提交之前都在终端中执行 gradle 构建,不如让 gradle 文件或项目设置告诉 Android Studio 不要包含任何未明确声明的存储库?
最佳答案
Android Studio 不为 android 插件 使用内置存储库(com.android.tools.build:gradle
)。
Android Studio 在第一次下载后缓存这些插件。
这意味着在您的情况下,第一次是从经过认证的存储库中下载的。
你可以在这里找到这个缓存:
file:/Applications/Android Studio.app/Contents/gradle/m2repository/com/android/tools/build/gradle/
此外,新的 Android 插件 3.3.x 仅位于 google maven 存储库“https://maven.google.com”中,而不是在 jcenter
中。
请记住,支持库、firebase 和 google play 服务库现在存储在同一个 google maven 存储库中,但旧版本离线存储在 android_sdk/extras/中。
在这里你可以找到更多的细节:
https://developer.android.com/studio/build/dependencies.html#google-maven
关于android - 如何从我们的项目中排除 Android Studio 的内部 m2 存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46353987/