Migrar projetos Android para o Cloud Endpoints Frameworks 2.0

Esta página descreve a migração de uma app Android Cloud Endpoints versão 1.0 existente para os Frameworks de Endpoints para o App Engine. Tenha em atenção que esta página se refere à versão 1.0 dos Endpoints como versão 1.0 dos Frameworks dos Endpoints e aos novos Frameworks dos Endpoints para o App Engine como versão 2.0 dos Frameworks dos Endpoints.

Vantagens

A nova estrutura oferece várias vantagens, incluindo:

  • Latência de pedidos reduzida
  • Melhor integração com as funcionalidades do App Engine, como domínios personalizados.
  • Apoio técnico oficial para configurações do Guice
  • Opcionalmente, novas funcionalidades de gestão de APIs

A versão 2.0 do Endpoints Frameworks não afeta as interfaces da sua API. Os clientes existentes continuam a funcionar após a migração sem alterações ao código do lado do cliente.

Migrar projetos Android com vários módulos para a versão 2.0 dos Frameworks de Endpoints

Os passos seguintes explicam como mover projetos do Android Studio Endpoints Frameworks versão 1.0 para o Endpoints Frameworks versão 2.0. O guia migra um projeto do Android Studio com um módulo Endpoints.

Lista de tarefas

Use a seguinte lista de tarefas de nível superior à medida que trabalha no guia de migração. Este guia de migração pressupõe que tem um projeto Android existente que usa um Google Cloud módulo.

  1. Antes de começar.
  2. Configure a CLI do Google Cloud.
  3. Opcional: transfira o exemplo de código.
  4. Migre para a versão 2.0 dos Frameworks de pontos finais.
  5. Implemente o módulo de back-end.
  6. Gere bibliotecas de cliente.

Antes de começar

  1. Instale o Android Studio.
  2. Instale o Android SDK 26 ou superior.
  3. Instale a CLI gcloud.

Configure a CLI gcloud

Para configurar a CLI gcloud:

  1. Inicialize a CLI gcloud:

     gcloud init
    
  2. Usar Credenciais padrão da aplicação:

     gcloud auth application-default login
    
  3. Instale o componente app-engine-java:

     gcloud components install app-engine-java
    

Opcional: transfira o exemplo de código

Para clonar os projetos de exemplo legacy e v2 do GitHub:

  1. Clone o repositório de exemplo para a sua máquina local:

     git clone https://github.com/GoogleCloudPlatform/android-docs-samples
    
  2. Altere para o diretório que contém o código de exemplo para legacy e v2:

     cd android-docs-samples/endpoints-frameworks/
    

Migre para a versão 2.0 dos frameworks de Endpoints

Atualize o ficheiro build.gradle

As dependências da versão 2.0 do Endpoints Frameworks usam o Guava 19 e o plugin de compilação do Android Gradle usa o Guava 18.com.android.tools.build:gradle:2.3.3 Adicione o Guava 19 ao encerramento das dependências do script de compilação para substituir esta dependência transitiva.build.gradle

Antigo

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

v2

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        // V2: Include this dependency when using Endpoints Framework v2
        classpath 'com.google.guava:guava:19.0'

        classpath 'com.android.tools.build:gradle:2.3.3'
    }
}

Atualize o ficheiro app/build.gradle

Na versão 1.0 dos Endpoints, usou o plugin do Gradle, gradle-appengine-plugin, para gerar um documento de descoberta de API. Na versão 2.0 dos Frameworks de Endpoints, usa o comando endpoints-framework-gradle-plugin para gerar um documento Discovery.

Este script de compilação usa o plugin do lado do cliente, com.google.cloud.tools.endpoints-framework-client.

Antigo

apply plugin: 'com.android.application'

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'
        }
    }
    configurations.all {
        resolutionStrategy.force 'com.google.code.findbugs:jsr305:2.0.1'
    }
}

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'
    compile 'com.google.http-client:google-http-client-android:1.22.0'
    compile 'com.google.api-client:google-api-client:+'
    testCompile 'junit:junit:4.12'

    // LEGACY: Legacy compile :backend project
    compile project(path: ':backend', configuration: