studio renderizado problemas problema muestra errores error diseño configurar con comunes android android-gradle wear-os

renderizado - El empaquetado de la aplicación de desgaste de Android falla con sabores



problemas con gradle en android studio (4)

Tengo una aplicación que incluye una aplicación de desgaste. Todo funciona bien en la depuración probada con un dispositivo real. También puedo crear el apk de lanzamiento que contiene el apk de desgaste dentro de él. Pero solo si hay un solo sabor en mi aplicación.

Quiero mantener dos versiones de la aplicación con diferente ID de aplicación, pero aunque esta compilación sin errores, en este caso los dos apks de lanzamiento (uno de cada sabor) no coinciden con los apks de desgaste correspondientes.

Esta es la parte relevante de la aplicación móvil build.gradle:

productFlavors { Trial { applicationId "com.example.myapp.trial" versionName "3.0.1" versionCode 301 } Full { applicationId "com.example.myapp" versionName "3.0.1" versionCode 301 } } } dependencies { compile ''com.google.android.gms:play-services:6.1.+@aar'' wearApp project('':myWearApp'') }

Y esta es la aplicación de desgaste correspondiente build.gradle:

productFlavors { Trial { applicationId "com.example.myapp.trial" versionName "3.0.1" versionCode 301 } Full { applicationId "com.example.myapp" versionName "3.0.1" versionCode 301 } } } dependencies { compile ''com.google.android.support:wearable:1.0.0'' compile ''com.google.android.gms:play-services-wearable:6.1.71'' }

Cualquier ayuda será bienvenida. Gracias.


Agregaré un poco más a la respuesta de @tormod, ya que omitió algunos puntos cruciales para incluir el hecho de publishNonDefault true

Aquí hay algunos ejemplos de archivos de Gradle para empaquetar un módulo de desgaste con sabores y tipos de construcción.

Módulo móvil build.gradle

apply plugin: ''com.android.application'' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "com.example.app" minSdkVersion 15 targetSdkVersion 23 versionCode 85 versionName "2.5.2" } buildTypes { debug { applicationIdSuffix ".debug" embedMicroApp = true minifyEnabled false } release { embedMicroApp = true shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro'' zipAlignEnabled true } } productFlavors { free{ applicationId "com.example.app" } pro{ applicationId "com.example.app.pro" } } } configurations { freeDebugWearApp proDebugWearApp freeReleaseWearApp proReleaseWearApp } dependencies { compile fileTree(dir: ''libs'', include: [''*.jar'']) testCompile ''junit:junit:4.12'' compile ''com.android.support:appcompat-v7:23.4.0'' freeDebugWearApp project(path: '':wear'', configuration: ''freeDebug'') proDebugWearApp project(path: '':wear'', configuration: ''proDebug'') freeReleaseWearApp project(path: '':wear'', configuration: ''freeRelease'') proReleaseWearApp project(path: '':wear'', configuration: ''proRelease'') }

Módulo Wear build.gradle

apply plugin: ''com.android.application'' android { compileSdkVersion 23 buildToolsVersion "23.0.3" publishNonDefault true defaultConfig { applicationId "com.example.app" minSdkVersion 20 targetSdkVersion 23 versionCode 85 versionName "2.5.2" } buildTypes { debug { applicationIdSuffix ".debug" minifyEnabled false } release { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro'' zipAlignEnabled true } } productFlavors { free { applicationId "com.example.app" } pro { applicationId "com.example.app.pro" } } } dependencies { ... }


El sabor de la aplicación principal no se propaga automáticamente al proyecto Wear. Tienes que mapearlo explícitamente.

En lugar de esto:

dependencies { wearApp project('':myWearApp'') }

Hacer esto:

En tu aplicación Wear:

android { publishNonDefault true }

En tu aplicación para padres:

dependencies { TrialWearApp project(path: '':myWearApp'', configuration: ''Trial'') FullWearApp project(path: '':myWearApp'', configuration: ''Full'') }


Gracias a la pista que Scott me dio, esta es la solución completa:

1.) Los sabores deben estar en minúsculas.

2.) las configuraciones de dependencia deben incluir el lanzamiento de sabor

3.) En la aplicación Wear buil gradle, bajo Android {}, debemos incluir publishNonDefault true

Así que para la aplicación móvil build.gradle:

android { ...... productFlavors { trial { applicationId "com.sample.myapp.trial" versionName "3.0.1" versionCode 301 } full { applicationId "com.sample.myapp" versionName "3.0.1" versionCode 301 } } } dependencies { trialWearApp project(path: '':myWearApp'', configuration: ''trialRelease'') fullWearApp project(path: '':myWearApp'', configuration: ''fullRelease'') }

Y para la aplicación de desgaste build.gradle:

android { publishNonDefault true ...... productFlavors { trial { applicationId "com.sample.myapp.trial" versionName "3.0.1" versionCode 301 } full { applicationId "com.sample.myapp" versionName "3.0.1" versionCode 301 } } }


Veo que encontró una solución a su problema, pero aquí está mi versión que combina configuraciones de construcción con sabores y sufijos de aplicación en caso de que la necesite en el futuro. También podría ser información relevante para aquellos que terminan en Google entrando en esta publicación.

app / build.gradle:

android { compileSdkVersion 23 buildToolsVersion ''23.0.3'' signingConfigs { debug { ... } release { ... } } defaultConfig { applicationId "com.sample.myapp" minSdkVersion 14 targetSdkVersion 23 versionName "3.0.1" versionCode 301 } buildTypes { debug { applicationIdSuffix ".debug" embedMicroApp = true minifyEnabled false debuggable true } release { embedMicroApp = true minifyEnabled true zipAlignEnabled true proguardFiles getDefaultProguardFile(''proguard-android-optimize.txt''), ''proguard-rules.pro'' } productFlavors { trial { applicationIdSuffix ".trial" } full { applicationIdSuffix ".pro" } } } configurations { trialDebugWearApp fullDebugWearApp trialReleaseWearApp fullReleaseWearApp } dependencies { ... trialDebugWearApp project(path: '':myWearApp'', configuration: ''trialDebug'') fullDebugWearApp project(path: '':myWearApp'', configuration: ''fullDebug'') trialReleaseWearApp project(path: '':myWearApp'', configuration: ''trialRelease'') fullReleaseWearApp project(path: '':myWearApp'', configuration: ''fullRelease'') }

desgaste / build.gradle:

android { compileSdkVersion 23 buildToolsVersion ''23.0.3'' publishNonDefault true signingConfigs { debug { ... } release { ... } } defaultConfig { applicationId "com.sample.myapp" minSdkVersion 20 targetSdkVersion 23 versionName "3.0.1" versionCode 301 } buildTypes { debug { applicationIdSuffix ".debug" minifyEnabled false debuggable true } release { minifyEnabled true proguardFiles getDefaultProguardFile(''proguard-android-optimize.txt''), ''proguard-rules.pro'' } productFlavors { trial { applicationIdSuffix ".trial" } full { applicationIdSuffix ".pro" } } dependencies { ... } }