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.

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' } } } } } 
  • ¿Cómo validar el formato y los valores de EditTextPreference introducidos en Android 2.1?
  • Android: ¿determinan el ID de proceso de mi aplicación?
  • Cómo utilizar startActivityForResult () a través de un DialogFragment?
  • ¿Cómo repetir una tarea después de una cantidad fija de tiempo en android?
  • Diferentes diseños de hijos para diferentes grupos ExpandableListView
  • Robotium_constructor mensaje obsoleto en el método NotepadTest para super
  • Prueba del código de Android con JUnit y el JDK
  • Cómo configurar el tamaño del archivo PDF con PdfDocument en Android
  • ¿Cómo importar ZXING a android studio?
  • Ksoap2 no puede serializar la excepción en Android 2.2 (utilizando objetos definidos por el usuario)
  • Android error en tutorial no puede encontrar la variable de símbolo activity_display_message
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.