Primeros pasos para desarrollar una Huawei App
Published: 2020-09-22 01:08:57

Para desarrollar y publicar una App en App Gallery, primero debes crear un Proyecto en App Gallery Connect (AGC), esto te permitirá conectar con los kits de desarrollo y con los servicios de AGC. En este artículo voy a explicarte la configuración básica en AGC y en tu Proyecto android, de esta forma tu app estará preparada para implementar el kit de HMS que desees.

##Requisitos previos
* Una cuenta de desarrollador verificada
Necesitas una cuenta de desarrollador para acceder a la consola de AGC, si no cuentas con una, puedes seguir esta [guía](https://developer.huawei.com/consumer/en/doc/10104) para registrarte como desarrollador.

##Creando el proyecto
Una vez creada tu cuenta, el primer paso esc rear un proyecto.
Inicia session en la consola de App Gallery y selecciona “My Project”
![Alt Text](https://miro.medium.com/max/1400/1*zs1BWSi7RYArntXP35kKQw.png)

Haz clic en el botón “Add Project”
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/bxuwmp2qsqo5hkn48f5w.png)

Asignale un nombre a tu proyecto y haz clic en el botón "add app"

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/8aqn4emrwgeyrfqn7khk.png)

Ingresa la información básica de tu app:
**Package Type:** Selecciona APK, el paquete RPK es para publicar quick apps y card abilities (hablaremos de eso en otro post)
Device: Mobile Phone es la única opción para este campo
**App Name:** Será el nombre de tu Proyecto en la consola
**App Category:** Elige entre App o Game
**Default language:** selecciona el lenguaje que tu app soporta por defecto, considera los países donde piensas publicar tu app.

##Creando el Proyecto Android
Si ya tienes un Proyecto creado, puedes saltar hasta “Configurando la firma en el archivo build.gradle”
Crea un Nuevo Proyecto en Android Studio seleccionando File > New > New Project.
Para el SDK mínimo revisa esta [tabla](https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides-V5/emui-version-dependent-0000001050042515-V5) para saber cuál es la versión mínima soportada de Android android/EMUI para los kits que quieres usar.

![Alt Text](https://miro.medium.com/max/1212/1*u9ueMJUv75z-wd2d1C9Z5Q.png)

##Creando la firma de la app
AGC utiliza la hualle digital de tu firma como medio de autenticación, cuando tu app trata de consumer un servicio de Huawei, la huella digial será comparada contra la que registres en AGC. Si la huella digital no coincide, tu app no funcionará adecuadamente. Por ejemplo, en el caso de Maps, el mapa no será desplegado y en el caso de Push, la app no podrá obtener el token necesario para recibir notificaciones.

Ve a “Build” y selecciona “Generate signed Bundle/APK”. Elige APK y haz clic en “next”

En el siguiente diálogo haz clic en “Create New”

![Alt Text](https://miro.medium.com/max/1144/1*T486FxiYgE2E0QiEFvI7EQ.png)

Llena la información requerida y asigna contraseñas para el keystore y el key alias.

Para “key store path” te recomiendo usar la carpeta “app” de tu proyecto.

![Alt Text](https://miro.medium.com/max/868/1*-0OpHyTpKnIvlJVejPIp2Q.png)

Haz clic en OK y marca la casilla “Remember passwords”, luego haz clic en siguiente.

![Alt Text](https://miro.medium.com/max/1140/1*niTOnqMAN6X64bn3XzSr_A.png)

Habilita las 2 versiones de firma, selecciona “release” y haz clic en “Finish”

![Alt Text](https://miro.medium.com/max/1144/1*fZgWAXucvpnQRPHRY00pAg.png)

##Configurando la firma en el archivo build.gradle
Agrega la siguiente configuración a tu archivo build.gradle (modulo app), de este modo las builds debug y reléase tendrán la misma firma y huella digital.

```
signingConfigs {
 release {
 storeFile file(“example.jks”)
 keyAlias ‘example’
 keyPassword ‘example123’
 storePassword ‘example123’
 v1SigningEnabled true
 v2SigningEnabled true
 }
 }
 
 buildTypes {
 release {
 signingConfig signingConfigs.release
 minifyEnabled false
 proguardFiles getDefaultProguardFile(‘proguard-android-optimize.txt’), ‘proguard-rules.pro’
 }
 debug {
 signingConfig signingConfigs.release
 debuggable true
 }
 }
```

Presiona el botón “Sync project with gradle files”.

![Alt Text](https://miro.medium.com/max/1400/1*QQ6CtcLluDJFLWOcy76SUw.png)

##Configurando la información del proyecto
Ve a “Develop” para empezar la configuración
Se te pedirá que ingreses el nombre de paquete de tu app “package name”, elige “Manually enter” y pega el nombre del paquete (puedes encontrarlo al inicio de tu archivo AndroidManifest.xml)

![Alt Text](https://miro.medium.com/max/1220/1*VI6By4yXIn_YZrVxQZhPMA.png)

Una vez ingresado el package name, verás el panel “General Information”

##Configurando el Data storage location (DSL)
Algunos servicios de AGC requieren que selecciones un DSL. Esta ubicación determina la infraestructura usada por AGC para porporcionar los servicios a tu app.
Al configurar un DSL, tu app sólo podrá ser lanzada en los países dónde dicho DSL tenga cobertura. Si tu app requiere un DSL y quieres lanzar tu app en todo el mundo, tendrás que crear un proyecto para cada DSL y así cubrir todos los territorios. Si queres lanzar tu app en todo el mundo, no configures un DSL a menos que sea absolutamente necesario para tu app. Puedes revisar este [documento](https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-Guides/agc-data-storage-location) para saber si tu app requerirá seleccionar un DSL.

![Alt Text](https://miro.medium.com/max/1400/1*f5T6R1Fn4Frfzpu5FS0Iyw.png)

Para añadir un DSL haz clic en el botón “set” y selecciona la ubicación que cubra todos o la mayoría de países dónde queras publicar tu app.

![DSL](https://miro.medium.com/max/1400/1*QOlUBxD_i94fE3aTVq2_7g.png)

##Agregando la huella digital
Regresa a Android Studio y abre el panel de “gradle” a la derecha, luego ejecuta la tarea “signing report”.
![Alt Text](https://miro.medium.com/max/1100/1*nNnYQFRVC8Wc8ljQ-mT0pg.png)

Se abrirá el panel “Run” en la parte de abajo de la pantalla. Copia el valor del campo SHA-256.
![Alt Text](https://miro.medium.com/max/1400/1*uuBrBeyM4JeIwdFWhkr0xQ.png)

Pega y guarda tu huella digital en App Gallery Connect
![Alt Text](https://miro.medium.com/max/1400/1*_0eEsbZLNiwYhcPrbJJzgQ.png)

##Agregando el SDK de HMS
Descarga tua rchivo de configuración agconnect-services.json desde la consola.
Guarda tu archivo en la carpeta “app” de tu proyecto. Si estás usando product flavors, guarda el json en la carpeta raíz de tu flavor.
Agrega el repositorio maven y la dependencia de AGC a tu build.gradle a nivel de proyecto.

```
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        google()
        jcenter()
        maven {url 'http://developer.huawei.com/repo/'}
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.0.0"
        classpath 'com.huawei.agconnect:agcp:1.3.1.300'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
allprojects {
    repositories {
        google()
        jcenter()
        maven {url 'http://developer.huawei.com/repo/'}
    }
}
task clean(type: Delete) {
    delete rootProject.buildDir
}
```
Ahora agrega el SDK de HMS y el plugin de AGC a tu build.gradle módulo app.

```
apply plugin: 'com.android.application'
apply plugin: 'com.huawei.agconnect'
dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    //HMS
    implementation 'com.huawei.agconnect:agconnect-core:1.3.0.300'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
```

Para terminar, sincroniza tu Proyecto con gradle.
![Alt Text](https://miro.medium.com/max/1400/1*QQ6CtcLluDJFLWOcy76SUw.png)

##Conclusión
Ahora tu app está lista para comenzar a integrar los kits de HMS y los servicios de AGC. Puedes volver a revisar esta guia cada vez que quieras desarrollar un app que funcione en teléfonos Huawei.