Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


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.

  • Estructura de Directorio de Android Maven
  • Scrollview no se desplaza hacia abajo completamente
  • Función de paso como parámetro en java
  • JAVA - ¿Es un error en la clase java.util.Calendar o qué?
  • Métodos estáticos o singleton, ¿cuál elegir?
  • Android AudioRecord forzando otro flujo a la fuente de audio MIC
  • El reajuste de MediaPlayer de Android congela la interfaz de usuario
  • Cómo crear una biblioteca de Android desde el código que tienen gradle dependencia?
  • 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' } } } } } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.