Android GCM con sabores de producto

Tengo GCM muestra androide gradle proyecto. Su funcionado bien, cuando agrego 2 sabores una notificación del empuje paró para trabajar. Mi archivo de manifiesto de compilación (se toma de app\build\intermediates\manifests\ex\debug ) se encuentra a continuación:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.flavor.app" <uses-permission android:name="com.flavor.app.permission.C2D_MESSAGE" /> <permission android:name="com.flavor.app.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <receiver android:name="com.google.android.gcm.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="com.flavor.app" /> </intent-filter> </receiver> <service android:name="com.ex.app.GCMIntentService" /> <service android:name="com.ex.app.AppLocationService" class=".AppLocationService" > <intent-filter> <action android:name=".AppLocationService" android:value=".AppLocationService" /> </intent-filter> </service> 

¿Qué debo hacer para solucionar este problema? Por favor ayuda.

UPD1. Estoy usando gradle v.0.12 +. Creo que mi archivo de manifiesto final se ve bien, GCMRegistrar.checkManifest (this); – sin errores, pero GCMRegistrar.isRegistered (este) siempre es falso. = (

UPD2. Mi primer proyecto de sabor con el nombre del paquete original (como proyecto en la rama principal) funciona bien, pero el segundo sabor con el paquete cambiado no funciona (registrationId para push sigue vacío), pero en el archivo de manifiesto todas las permiciones son correctas.

3 Solutions collect form web for “Android GCM con sabores de producto”

Simpy utiliza el alias ${applicationId} como este

 <permission android:name= "${applicationId}.permission.C2D_MESSAGE" android:protectionLevel= "signature" /> <uses-permission android:name= "${applicationId}.permission.C2D_MESSAGE" /> <uses-permission android:name= "com.google.android.c2dm.permission.RECEIVE" /> 

Y para el receptor correspondiente use esto

  <receiver android:name = "com.mixpanel.android.mpmetrics.GCMReceiver" android:permission = "com.google.android.c2dm.permission.SEND"> <intent-filter> <action android:name = "com.google.android.c2dm.intent.RECEIVE"/> <action android:name = "com.google.android.c2dm.intent.REGISTRATION"/> <category android:name = "${applicationId}"/> </intent-filter> </receiver> 

He encontrado la solución en este post GCM no se registra al cambiar el nombre del paquete con Gradle . Acabo de anular BroadcastReceiver, si alguien puede explicar por qué ayuda por favor dígame.

Agregue el siguiente código en las aplicaciones build.gradle que copiará el archivo json de flovour seleccionado en la carpeta de la aplicación.

 gradle.taskGraph.beforeTask { Task task -> if(task.name ==~ /process.*GoogleServices/) { android.applicationVariants.all { variant -> if(task.name ==~ /(?i)process${variant.name}GoogleServices/){ copy { from "/src/${variant.flavorName}" into '.' include 'google-services.json' } } } } } 
  • Android: Convertir secuencia a cadena sin quedarse sin memoria
  • Biblioteca de justificación de texto en Java
  • Android Studio: punto de interrupción en el método estático de la interfaz no funciona
  • Socket IPv6 en Android
  • Crear una imagen que se puede hacer clic en un GridView en Android
  • Compile Flags para el desarrollo de Eclipse / Android
  • No se puede mostrar el hash correcto en Java. ¿Qué está mal?
  • Cambiar el perfil de calidad en SonarQube.com
  • Android Development: Obtención de datos desde la Web
  • Android: Debería agregar un constructor vacío a un fragmento utilizado en ViewPager
  • !!! JUnit versión 3.8 o posterior esperado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.