Android:如何让gradle让特定的依赖关系脱机而其他人在线?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android:如何让gradle让特定的依赖关系脱机而其他人在线?相关的知识,希望对你有一定的参考价值。

我有一些不需要每个Gradle Sync更新的依赖项,所以我需要Gradle不要从互联网上更新它并且只使用缓存版本工作离线模式,还有其他想要更新它们的依赖项线上。

我试图增加缓存持续时间并使用更改属性,但是当我比较工作离线模式所花费的时间时,这对我没有帮助。

例如,我需要Gradle下载support-v4,并强制Gradle使用appcompat-v7的离线缓存版本,即使不在线检查校验和。

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation ('com.android.support:appcompat-v7:25.3.1') {
        changing = false
    }
    implementation ('com.android.support:support-v4:25.3.1') {
        changing = true
    }
}

configurations.all {
    resolutionStrategy.cacheChangingModulesFor 1209600, 'seconds'
}

谁有更好的主意?正常Gradle同步需要4分钟,离线模式只需50秒

答案

有可能做到。您只需要知道下载的依赖项的位置。知道目录位置后,更改项目的build.gradle,如下所示:

    buildscript {

        repositories {
            maven { url uri('<location of downloaded dependancy>') }
            google()
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.1.0'
        }
    }

allprojects {
    repositories {
        maven { url uri('<location of downloaded dependancy>') }
        google()
        jcenter()
    }
}

在线检查之前,这将强制gradle在本地检查依赖性。

以上是关于Android:如何让gradle让特定的依赖关系脱机而其他人在线?的主要内容,如果未能解决你的问题,请参考以下文章

如何告诉 Grails 使用 Gradle 解决依赖关系

Gradle:如何在java中以编程方式声明对项目特定配置的依赖关系

Gradle构建工具与Android对应关系

如何从具有 gradle 依赖关系的代码创建一个 Android 库?

gradle 初了解

使用Gradle构建时间点