【问题标题】:Android Studio console build cannot reuse cached gradle dependenciesAndroid Studio 控制台构建无法重用缓存的 gradle 依赖项
【发布时间】:2017-04-12 08:41:24
【问题描述】:

Android Studio 在 2.2.2 版本上运行,带有 gradle 3.2.1 和 gradle plugin 2.2.2

我正在将项目从 Eclipse ADT 迁移到 Android Studio。我的 Android Studio 项目有多个作为模块导入的 ADT 项目。 Android Studio 在离线模式下运行,gradle 源在本地可用。

顶级 build.gradle

buildscript {
    repositories {
        jcenter ()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.2'
    }
}
allprojects {
    repositories {
        jcenter()
    }
}

这是一个示例模块 build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "25.0.1"
    defaultConfig {
        applicationId "com.my.project"
        minSdkVersion 17
        targetSdkVersion 23
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
    externalNativeBuild {
        ndkBuild {
            path 'jni/Android.mk'
        }
    }
}

dependencies {
    compile 'com.android.support:support-v4:23.4.0'
    compile files('libs/commons-exec-1.3.jar')
    compile files('libs/commons-io-2.4.jar')
}

Android Studio 中的 Gradle 同步工作正常,但任何使用选项 --offline 的控制台构建都会失败,因为缺少缓存的存储库。我无法上线测试在线同步。

我尝试了不同的构建选项,定义 --gradle-user-home--project-cache-dir 均未成功。

这是个例外

* What went wrong:
A problem occurred configuring root project 'My-Project'.
> Could not resolve all dependencies for configuration ':classpath'.
   > Could not resolve com.android.tools.build:gradle:2.2.2.
     Required by:
         project :
      > No cached version of com.android.tools.build:gradle:2.2.2 available for offline mode.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

Android Studio gradle sync 的缓存仓库不能复用吗?有很多项目文件夹似乎包含缓存的 gradle 文件,但它是哪一个?我可以看到PRJ_DIR/.gradle/caches/3.2.1PRJ_DIR/cachesPRJ_DIR/gradle/caches。我必须在控制台构建中指定每个任务吗?

【问题讨论】:

    标签: android android-studio caching gradle offline


    【解决方案1】:

    我需要确保已经定义了 gradle 缓存的路径,并且它对于 Android Studio 和控制台构建是相同的。

    最简单的方法是定义 gradle home 的路径:

    export GRADLE_USER_HOME=/path/to/gradle/local/cache

    我在可以访问互联网的计算机上创建了一个虚拟项目,执行了 gradle 在线同步。之后,在Android Studio中切换到离线模式并在项目文件夹中执行./gradlew --offline。构建成功。

    现在,可以创建一个仍处于离线模式的新项目(可以关闭互联网访问)并使用缓存的 gradle 构建。

    【讨论】:

      猜你喜欢
      • 2014-02-04
      • 2013-12-12
      • 2021-10-05
      • 2017-07-25
      • 1970-01-01
      • 2014-11-10
      • 2015-12-19
      • 1970-01-01
      相关资源
      最近更新 更多