Google Android Studio 3.4 (gradle 5.1.1) 端点框架中断
Google endpoint framework breaks for Android Studio 3.4 (gradle 5.1.1)
我有一个使用 Google App Engine 和 Android 的项目。
升级到 Android Studio 3.4 (gradle 5.1.1) 后出现以下 "gradle project sync failed" 错误。
它在之前使用 gradle 4.10.1 的 android 工作室版本中运行良好。
欢迎任何指点。如果您需要我提供更多信息,请告诉我
Caused by: java.lang.NoSuchMethodError: org.gradle.api.tasks.SourceSetOutput.getClassesDir()Ljava/io/File;
at com.google.cloud.tools.gradle.endpoints.framework.server.EndpointsServerPlugin.execute(EndpointsServerPlugin.java:108)
at com.google.cloud.tools.gradle.endpoints.framework.server.EndpointsServerPlugin.execute(EndpointsServerPlugin.java:98)
以下是后端模块的 build.gradle 文件。
这是在我使用迁移指南迁移到 GAE V2 之后 (https://cloud.google.com/endpoints/docs/frameworks/java/migrating-android)
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.google.cloud.tools:endpoints-framework-gradle-plugin:1.0.2'
classpath 'com.google.cloud.tools:appengine-gradle-plugin:1.3.2'
}
}
repositories {
jcenter()
}
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'com.google.cloud.tools.appengine'
apply plugin: 'com.google.cloud.tools.endpoints-framework-server'
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
dependencies {
// V2: Endpoints Framework v2 migration
implementation 'com.google.endpoints:endpoints-framework:2.0.9'
implementation 'javax.inject:javax.inject:1'
implementation 'javax.servlet:servlet-api:2.5'
implementation 'com.googlecode.objectify:objectify:5.1.9'
}
为了让它再次工作,我不得不从 build.gradle (module:app )
中注释掉以下内容
//buildscript {
// repositories {
// jcenter()
// }
// dependencies {
// // V2: Add the new Endpoints Framework plugin dependencies
// classpath 'com.google.cloud.tools:endpoints-framework-gradle-plugin:1.0.3'
// }
//}
相反,将类路径添加到 build.gradle(项目)
buildscript {
repositories {
jcenter()
google()
}
dependencies {
// V2: Include this dependency when using Endpoints Framework v2
classpath 'com.google.guava:guava:24.1-jre'
//**moved from the build.gradle in module:app**
classpath 'com.google.cloud.tools:endpoints-framework-gradle-plugin:1.0.3'
///... <snips> the rest of the build.gradle file
更新自:
类路径 'com.google.cloud.tools:endpoints-framework-gradle-plugin:1.0.2'
到:
类路径 'com.google.cloud.tools:endpoints-framework-gradle-plugin:1.0.3'
在我的项目中解决了这个问题
我有一个使用 Google App Engine 和 Android 的项目。
升级到 Android Studio 3.4 (gradle 5.1.1) 后出现以下 "gradle project sync failed" 错误。
它在之前使用 gradle 4.10.1 的 android 工作室版本中运行良好。
欢迎任何指点。如果您需要我提供更多信息,请告诉我
Caused by: java.lang.NoSuchMethodError: org.gradle.api.tasks.SourceSetOutput.getClassesDir()Ljava/io/File;
at com.google.cloud.tools.gradle.endpoints.framework.server.EndpointsServerPlugin.execute(EndpointsServerPlugin.java:108)
at com.google.cloud.tools.gradle.endpoints.framework.server.EndpointsServerPlugin.execute(EndpointsServerPlugin.java:98)
以下是后端模块的 build.gradle 文件。
这是在我使用迁移指南迁移到 GAE V2 之后 (https://cloud.google.com/endpoints/docs/frameworks/java/migrating-android)
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.google.cloud.tools:endpoints-framework-gradle-plugin:1.0.2'
classpath 'com.google.cloud.tools:appengine-gradle-plugin:1.3.2'
}
}
repositories {
jcenter()
}
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'com.google.cloud.tools.appengine'
apply plugin: 'com.google.cloud.tools.endpoints-framework-server'
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
dependencies {
// V2: Endpoints Framework v2 migration
implementation 'com.google.endpoints:endpoints-framework:2.0.9'
implementation 'javax.inject:javax.inject:1'
implementation 'javax.servlet:servlet-api:2.5'
implementation 'com.googlecode.objectify:objectify:5.1.9'
}
为了让它再次工作,我不得不从 build.gradle (module:app )
中注释掉以下内容//buildscript {
// repositories {
// jcenter()
// }
// dependencies {
// // V2: Add the new Endpoints Framework plugin dependencies
// classpath 'com.google.cloud.tools:endpoints-framework-gradle-plugin:1.0.3'
// }
//}
相反,将类路径添加到 build.gradle(项目)
buildscript {
repositories {
jcenter()
google()
}
dependencies {
// V2: Include this dependency when using Endpoints Framework v2
classpath 'com.google.guava:guava:24.1-jre'
//**moved from the build.gradle in module:app**
classpath 'com.google.cloud.tools:endpoints-framework-gradle-plugin:1.0.3'
///... <snips> the rest of the build.gradle file
更新自: 类路径 'com.google.cloud.tools:endpoints-framework-gradle-plugin:1.0.2' 到: 类路径 'com.google.cloud.tools:endpoints-framework-gradle-plugin:1.0.3'
在我的项目中解决了这个问题