无法识别端点客户端库

时间:2017-10-25 02:36:29

标签: android android-studio build.gradle google-cloud-endpoints android-studio-3.0

不确定发生了什么,但在转到gradle 3.0.0 rc2后,我的app模块无法识别端点模块生成的任何客户端库。

构建可以完成没有任何问题,但有一个例外......构建中没有任何新API被选中。

这是我的app模块中gradle文件的依赖项部分:

dependencies {
// Gradle dependency check...must be run in the project directory
// ./gradlew -q dependencies app:dependencies --configuration compile

implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation project(path: ':backend', configuration: 'android-endpoints')

更新

我注意到war / jar文件一直在backend / build / libs中更新,zip文件也在后端/ build / client-libs中更新。

更新#2:

Android Studio 3.0会出现这种情况。

更新#3: 显然,这是3.0 rc2的已知错误,请参阅here

更新#4 这是Google团队的建议,但我不知道让它发挥作用。任何人吗?

//In library module:

dependencies {
   api fileTree(include: ['*.jar'], dir: 'libs')
}

gradle文件引用:

项目级别:

buildscript {
repositories {
    jcenter()
    google()
}
dependencies {

    // 2.0
    classpath 'com.google.guava:guava:22.0'
    classpath 'com.android.tools.build:gradle:3.0.0'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}
}

allprojects {
repositories {
    jcenter()
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}

端点(后端)级别:

buildscript {
repositories {
    mavenCentral()
    jcenter()

}
dependencies {
    // V2: Add the new App Engine and Endpoints Frameworks plugin dependencies
    classpath 'com.google.cloud.tools:endpoints-framework-gradle-plugin:1.0.2'
    classpath 'com.google.cloud.tools:appengine-gradle-plugin:1.3.3'

}
}

repositories {
mavenCentral()
jcenter()
}

apply plugin: 'java'
apply plugin: 'war'

// V2: Apply new App Engine and Endpoints Framework server plugins
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.8'

testImplementation 'junit:junit:4.12'
testImplementation 'com.google.appengine:appengine-testing:1.9.59'
testImplementation 'com.google.appengine:appengine-api-stubs:1.9.59'

// 2.0
//implementation group: 'com.google.endpoints', name: 'endpoints-framework', version: '+'

implementation group: 'com.googlecode.junit-toolbox', name: 'junit-toolbox', version: '1.5'

implementation 'com.googlecode.objectify:objectify:5.1.21'
implementation 'org.json:json:20151123'
implementation 'javax.servlet:servlet-api:2.5'
implementation 'org.apache.httpcomponents:httpclient:4.5.2'
implementation 'com.ganyo:gcm-server:1.0.2'
implementation 'com.google.appengine.tools:appengine-gcs-client:0.4.4'
implementation 'com.google.apis:google-api-services-storage:v1-rev66-1.21.0'
implementation 'com.google.api-client:google-api-client:1.23.0'
implementation 'com.google.http-client:google-http-client-android:1.23.0'

// I think this can be deleted
//implementation 'commons-fileupload:commons-fileupload:1.3.1'


}

appengine {
// All commented out due to v2
//downloadSdk = true
/*appcfg {
    oauth2 = true
}*/
/*endpoints {
    getClientLibsOnBuild = true
    getDiscoveryDocsOnBuild = true
    googleClientVersion = '1.23.0'
}*/

//httpAddress = "0.0.0.0"


}

// 2.0 - optional
endpointsServer {
// Endpoints Framework Plugin server-side configuration
hostname = "mickey-mouse-pooh.appspot.com"
}

应用级别:

apply plugin: 'com.android.application'

// V2: Apply the new Endpoints Framework client plugin
apply plugin: 'com.google.cloud.tools.endpoints-framework-client'

buildscript {
repositories {
    jcenter()
}
dependencies {
    // V2: Add the new Endpoints Framework plugin dependencies
    classpath 'com.google.cloud.tools:endpoints-framework-gradle-
plugin:1.0.2'
}
}

android {
compileSdkVersion 26
buildToolsVersion '26.0.2'
defaultConfig {
    applicationId "com.inneraries.projectboon"
    minSdkVersion 20 // before to update
    targetSdkVersion 26
    android.compileOptions.sourceCompatibility 1.8
    android.compileOptions.targetCompatibility 1.8
    versionCode 112
    versionName 'Phoenix'
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
productFlavors {

}
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
}

repositories {
jcenter()
maven {
    url "https://maven.google.com"
}
}

dependencies {
// Gradle dependency check...must be run in the project directory
// ./gradlew -q dependencies app:dependencies --configuration compile
implementation fileTree(include: ['*.jar'], dir: 'libs')

// V2
endpointsServer project(path: ':backend', configuration: 'endpoints')

// the "force" element is in place to avoid the conflict from the Facebook SDK 4.36.0 which is
// using 25.3.1 Android SDK
api('com.android.support:appcompat-v7:26.1.0') {
    force = true
}
api('com.android.support:design:26.1.0') {
    force = true
}
// For enabling Google app invite
api 'com.google.firebase:firebase-invites:11.4.2'

api 'com.google.android.gms:play-services-plus:11.4.2'
api 'com.google.android.gms:play-services-auth:11.4.2'
api 'com.google.android.gms:play-services-identity:11.4.2'
api 'com.google.android.gms:play-services-location:11.4.2'
api 'com.google.android.gms:play-services-gcm:11.4.2'
api 'com.facebook.android:facebook-android-sdk:4.27.0'

api 'com.google.api-client:google-api-client:1.23.0'
api 'com.google.http-client:google-http-client-android:1.23.0'
}

// this is to avoid this error
// Warning:Conflict with dependency 'com.google.code.findbugs:jsr305'.
// Resolved versions for app (1.3.9) and test app (2.0.1) differ.
configurations.all {
resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
}

2 个答案:

答案 0 :(得分:1)

截至2017年11月1日,Google的立场为Upgrade the framework to v2

他们还提供了一些解决方法(您的经理可能不喜欢这样):

  
      
  1. 手动构建客户端库并将其复制。 [使用gradle任务:appengineEndpointsGetClientLibs]
  2.   
  3. 导出预先制作的jar并将其复制。 [使用gradle任务:appengineEndpointsExportClientLibs]注意:2和3将要求你   直接在Android应用程序

  4. 上添加google-api-client-lib依赖项   
  5. 尝试使用使用不同机制的新插件,同时自动将源添加到项目中,这不会集成   使用Android Studio的UI - 因此您必须使用gradle /命令行   工具直接用于运行和部署:   https://github.com/GoogleCloudPlatform/endpoints-framework-gradle-plugin/blob/master/ANDROID_README.md

  6.   

如果您需要参考,我已在问题描述中提供我的gradle文件。

答案 1 :(得分:1)

我在过去10天内调查了这个问题,这是我所理解的。谷歌关于端点开发的理念已经发生了变化,该理念自第一次引入以来已经集成在Android Studio中。事实上,Android Studio 3不会为Endpoint提供本机支持(实际上,您无法再添加端点模块)。 基本上,他们试图将后端开发(对于所有平台应该是通用的)与客户端开发分开。因此,他们会鼓励您在IntelliJ上开发后端,然后在您的“lib”中导入生成的库。文件夹(现在是项目创建时的默认文件夹)。他们还为IntelliJ提供了专用的端点部署工具(参见https://cloud.google.com/tools/intellij/docs/)。

相关问题