android - 如何从我们的项目中排除 Android Studio 的内部 m2 存储库?

标签 android android-studio android-gradle-plugin

我的组织维护着自己的库和工具库,用于构建项目。只有在组织的授权成员手动审查后,新项目才会添加到此存储库。这意味着在我们的 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/

相关文章:

android - 添加模块时如何阻止Android Studio复制文件?

java - 在 Android 中使用 ProGuard

Adobe Air StageWebView 中的 Android 远程 Chrome 调试

java - 如何从可绘制对象创建图像的 ArrayList 并将其显示在 fragment ListView 中?

java - 使用 MediaRecorder 在 Android 上录制屏幕时无法获取 Surface

android - android studio 上的 flutter 安装。没有 main.dart 或任何文件出现

android - 如何解决Android Studio中的以下gradle依赖项不匹配问题?问题在下面提到:

android - 处理来自 Chrome 的共享和其他操作

android - Gradle 需要太多的构建

android - gradle : Could not find com. android.support :multidex:1. 0.1