Sugumar P
Sugumar P

Reputation: 1

Google App engine Endpoint Version Migration V1 to V2

We have created Google Endpoint api v1 using android studio. We have received email from google cloud that is Google Api version v1 was deprecated. So we tried to update v1 to v2. So referred following link for migrate. https://cloud.google.com/endpoints/docs/frameworks/legacy/v1/java/migrating-android#before_you_begin

After change when we try to run that time show '.../backend/build/exploded-app' does not exist

If I look at the directory tree within my project I can see the exploded directory "../build/exploded-backend" based on the module name "backend" and 'endpointsDiscoveryDocs' that contains Discovery docs.

Not available '.../backend/build/exploded-app' and '.../backend/build/endpointsClientLibs'

When i tried to execute, Build was successful but shown on Error running backend: Cannot start process, the working directory '...\MyAppliaiton\backend\build\exploded-app' does not exist

Following build.xml are used in my android project

MyApplication build.gradle

buildscript {
    repositories {
        jcenter()
    }
    dependencies {

        classpath 'com.google.guava:guava:19.0'
        classpath 'com.android.tools.build:gradle:2.3.3'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

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

App build.gradle

**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.0'
    }
}

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {
        applicationId "com.chainsys.myapplication"
        minSdkVersion 20
        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('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.2'
    compile 'com.google.code.findbugs:jsr305:2.0.1'
    testCompile 'junit:junit:4.12'


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

}**

Backend build.gradle

**buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        //classpath 'com.google.appengine:gradle-appengine-plugin:1.9.42'
        // V2: Add the new App Engine and Endpoints Frameworks plugin 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'

// apply plugin: 'appengine'


// 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'

dependencies {

    //appengineSdk 'com.google.appengine:appengine-java-sdk:1.9.42'

    // V2: Endpoints Framework v2 migration
    compile 'com.google.endpoints:endpoints-framework:2.0.7'

    compile 'javax.inject:javax.inject:1'
    compile 'javax.servlet:servlet-api:2.5'


  //  compile 'com.google.appengine:appengine-endpoints:1.9.42'
   // compile 'com.google.appengine:appengine-endpoints-deps:1.9.42'
   // compile 'javax.servlet:servlet-api:2.5'

}

// V2: Define deployment configuration using the new App Engine plugin
// with the appengine closure
appengine {  // App Engine tasks configuration


    deploy {   // deploy configuration

        // The following is used for acceptance tests and
        // is not required for a migration.
        project = findProperty("appengine.deploy.project")
        version = findProperty("appengine.deploy.version")
        def promoteProp = findProperty("appengine.deploy.promote")
        if (promoteProp != null) {
            promote = new Boolean(promoteProp)
        }
    }


}**

Backend web.xml

**<?xml version="1.0" encoding="utf-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee">
    <servlet>
        <servlet-name>EndpointsServlet</servlet-name>
        <servlet-class>com.google.api.server.spi.EndpointsServlet</servlet-class>
        <init-param>
            <param-name>services</param-name>
            <param-value>com.example.sugumar.p.myapplication.backend.MyEndpoint</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>EndpointsServlet</servlet-name>
        <url-pattern>/_ah/api/*</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>**

I need a help what happened here.

Upvotes: 0

Views: 460

Answers (1)

Javier Delgado
Javier Delgado

Reputation: 2383

I was updating my appengine module from Java 7 to Java 8 and Endpoints v1 to Endpoints v2 and it really is a pain in the ass.

I have solved it going to

[backend-module]/[backend-module].iml

and changing the line

value="C:\workspace\ [project] \ [backend-module] \build\exploded-app

to

value="C:\workspace\ [project] \ [backend-module] \build\exploded-[backend-module]

Upvotes: 6

Related Questions