Android Studio 控制台构建无法重用缓存的 gradle 依赖项
Android Studio console build cannot reuse cached gradle dependencies
Android Studio 运行 版本 2.2.2 带有 gradle 3.2.1 和 gradle 插件 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')
}
Gradle 在 Android Studio 中同步工作正常,但任何带有选项 --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 同步的缓存存储库?有这么多项目文件夹似乎包含缓存的 gradle 文件,但它是哪一个?我可以看到 PRJ_DIR/.gradle/caches/3.2.1
、PRJ_DIR/caches
或 PRJ_DIR/gradle/caches
。我是否必须在控制台构建中指定每个任务?
我需要确保 gradle 缓存的路径已经定义,并且 Android Studio 和控制台构建的路径相同。
最简单的方法是定义 gradle 家的路径:
export GRADLE_USER_HOME=/path/to/gradle/local/cache
我在可以访问互联网的计算机上创建了一个虚拟项目,执行了 gradle 在线同步。之后,在Android Studio 中切换到离线模式并在项目文件夹中执行./gradlew --offline
。构建成功。
现在,仍然可以在离线模式下创建新项目(可以关闭互联网访问)并使用缓存的 gradle 构建。
Android Studio 运行 版本 2.2.2 带有 gradle 3.2.1 和 gradle 插件 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')
}
Gradle 在 Android Studio 中同步工作正常,但任何带有选项 --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 同步的缓存存储库?有这么多项目文件夹似乎包含缓存的 gradle 文件,但它是哪一个?我可以看到 PRJ_DIR/.gradle/caches/3.2.1
、PRJ_DIR/caches
或 PRJ_DIR/gradle/caches
。我是否必须在控制台构建中指定每个任务?
我需要确保 gradle 缓存的路径已经定义,并且 Android Studio 和控制台构建的路径相同。
最简单的方法是定义 gradle 家的路径:
export GRADLE_USER_HOME=/path/to/gradle/local/cache
我在可以访问互联网的计算机上创建了一个虚拟项目,执行了 gradle 在线同步。之后,在Android Studio 中切换到离线模式并在项目文件夹中执行./gradlew --offline
。构建成功。
现在,仍然可以在离线模式下创建新项目(可以关闭互联网访问)并使用缓存的 gradle 构建。