将Google云端点迁移到版本v2

时间:2017-08-08 08:19:39

标签: android-studio google-app-engine google-cloud-platform google-cloud-endpoints

我在堆栈溢出时引用此链接仍然无法迁移到版本v2。

Link Referred from stack overflow

按照以下链接中的建议进行更改后,我收到此错误。

Link Referred

  

无法在存储库容器上找到参数[]的方法google()。

这是我的项目级别gradle文件

bool
  

App level build.gradle

buildscript {

    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-alpha8'
        classpath "com.google.cloud.tools:endpoints-framework-gradle-plugin:1.0.0"
        classpath 'com.google.guava:guava:19.0'

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

allprojects {
    repositories {
        jcenter()
        google()
    }
}

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

后端build.gradle

    apply plugin: 'com.android.application'
apply plugin: 'com.google.cloud.tools.endpoints-framework-client'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        applicationId "com.xxx.migrationv2"
        minSdkVersion 16
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}

configurations {
    compile.exclude group: "org.apache.httpcomponents", module: "httpclient"
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.google.code.findbugs:jsr305:2.0.1'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.0'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.0'
    endpointsServer project(path: ':backend', configuration: 'endpoints')
    compile 'com.google.api-client:google-api-client:1.21.0'
}

请告诉我在此次迁移中我做错了什么,任何建议都会有所帮助。

2 个答案:

答案 0 :(得分:0)

您的存储库中不需要google()行,目前您有两次。

答案 1 :(得分:0)

完整样本可在以下网址找到:https://cloud.google.com/endpoints/docs/frameworks/legacy/v1/java/migrating-android

替换为您的项目级build.gradle,将google()作为存储库删除:

  

的build.gradle

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.3'
        classpath 'com.google.guava:guava:20.0'

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

allprojects {
    repositories {
        mavenCentral()
        jcenter()
    }
}

您的应用级build.gradle缺少buildscript。它需要看起来像这样。

  

应用程序/的build.gradle

buildscript {
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        // Endpoints Frameworks Gradle plugin
        classpath 'com.google.cloud.tools:endpoints-framework-gradle-plugin:+'
    }
}

apply plugin: 'com.android.application'
apply plugin: 'com.google.cloud.tools.endpoints-framework-client'

android {
        compileSdkVersion 26
        buildToolsVersion '26.0.1'
    defaultConfig {
        applicationId 'com.example.migration.endpoints.app'
        minSdkVersion 25
        targetSdkVersion 26
        versionCode 1
        versionName '1.0'
        testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

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

    // androidTestCompile compiles instrumentation tests written using Espresso
    // used by Firebase Test Lab
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.1'
    compile 'com.google.code.findbugs:jsr305:2.0.1'
    testCompile 'junit:junit:4.12'

    // V2: Endpoints Framework v2 migration
    endpointsServer project(path: ':backend', configuration: 'endpoints')
    compile 'com.google.api-client:google-api-client:1.22.0'
    compile 'com.google.http-client:google-http-client-android:1.22.0'
}

我的后端级别build.gradle中还有一些额外的依赖项基于:https://cloud.google.com/appengine/docs/standard/java/tools/gradle-endpoints-frameworks-plugin

  

后端/的build.gradle

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.google.cloud.tools:endpoints-framework-gradle-plugin:1.0.0'
        classpath 'com.google.cloud.tools:appengine-gradle-plugin:1.3.2'
    }
}

repositories {
    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_7
targetCompatibility = JavaVersion.VERSION_1_7

dependencies {
    // AppEngine
    compile group: 'com.google.appengine', name: 'appengine-api-1.0-sdk', version: '+'
    compile 'javax.servlet:servlet-api:2.5'

    //  Cloud Endpoints Framework
    providedCompile group: 'javax.servlet', name: 'servlet-api', version:'2.5'
    compile 'jstl:jstl:1.2'
    compile group: 'javax.inject', name: 'javax.inject', version: '1'
    compile group: 'com.google.endpoints', name: 'endpoints-framework', version: '+'
    compile group: 'com.google.endpoints', name: 'endpoints-management-control-appengine', version: '+'
    compile group: 'com.google.endpoints', name: 'endpoints-framework-auth', version: '+'
}

endpointsServer {
  // Endpoints Framework Plugin server-side configuration
  hostname = "YOUR-PROJECT-ID.appspot.com"
}

上面提供的内容并非直接表示我所拥有的内容,而是各种Google文档来源的混合搭配。