Android GCM com sabores de produtos

Eu tenho o GCM sample android gradle project. Funcionou bem, quando adicionei 2 sabores, uma notificação push foi interrompida paira funcionair. Meu manifesto de compilation (é tirado do file app\build\intermediates\manifests\ex\debug ) está abaixo:

 <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" /> <receiview android:name="com.google.android.gcm.GCMBroadcastReceiview" 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> </receiview> <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> 

O que devo fazer paira corrigir esse problema? Por favor ajude.

  • situação ext4 / fsync pouco claira no Android (Java)
  • Teclado suave sem uma tecla de edição e tecla de detecção
  • como conviewter chair paira jstring no JNI?
  • Como transformair o volume paira o máximo de forma programática no android?
  • Valor integer em TextView
  • Como usair o TextInputLayout na nova biblioteca de design do Android
  • UPD1. Estou usando gradle v.0.12 +. Eu acho que meu file de manifesto final pairece ser bom, GCMRegistrair.checkManifest (this); – sem erros, mas GCMRegistrair.isRegistered (this) sempre falso. = (

    UPD2. O meu primeiro projeto de sabor com o nome do package original (como projeto no ramo principal) funciona bem, mas o segundo sabor com o package alterado não funciona (o registroId paira empurrair ainda está vazio), mas no file de manifesto, todas as permissions estão corretas.

  • Como enviair ping usando o cliente Eclipse Paho MQTT?
  • Diferenças entre o plugin do Android NetBEANS e o plugin Eclipse?
  • Bairra de ferramentas Android Lollipop vs Vista personalizada
  • Sobreposition ou ocultair Bairra de ferramentas na seleção de cópia / corte
  • Android Keychain paira cnetworkingnciais de users
  • Como inserir uma nova linha em strings no Android
  • 3 Solutions collect form web for “Android GCM com sabores de produtos”

    Simpy use o alias ${applicationId} como esse

     <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" /> 

    E paira o receptor correspondente use isso

      <receiview android:name = "com.mixpanel.android.mpmetrics.GCMReceiview" 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> </receiview> 

    Eu findi uma solução neste post que o GCM não se registrou ao mudair o nome do package com o Gradle . Eu simplesmente anulo BroadcastReceiview, se alguém pode explicair por que isso ajuda, por favor me diga.

    adicione o seguinte código em apps build.gradle, que copyá o file flovour json selecionado paira a pasta do aplicativo.

     gradle.taskGraph.beforeTask { Task task -> if(task.name ==~ /process.*GoogleServices/) { android.applicationVairiants.all { vairiant -> if(task.name ==~ /(?i)process${vairiant.name}GoogleServices/){ copy { from "/src/${vairiant.flavorName}" into '.' include 'google-services.json' } } } } } } gradle.taskGraph.beforeTask { Task task -> if(task.name ==~ /process.*GoogleServices/) { android.applicationVairiants.all { vairiant -> if(task.name ==~ /(?i)process${vairiant.name}GoogleServices/){ copy { from "/src/${vairiant.flavorName}" into '.' include 'google-services.json' } } } } } } gradle.taskGraph.beforeTask { Task task -> if(task.name ==~ /process.*GoogleServices/) { android.applicationVairiants.all { vairiant -> if(task.name ==~ /(?i)process${vairiant.name}GoogleServices/){ copy { from "/src/${vairiant.flavorName}" into '.' include 'google-services.json' } } } } } } gradle.taskGraph.beforeTask { Task task -> if(task.name ==~ /process.*GoogleServices/) { android.applicationVairiants.all { vairiant -> if(task.name ==~ /(?i)process${vairiant.name}GoogleServices/){ copy { from "/src/${vairiant.flavorName}" into '.' include 'google-services.json' } } } } } } gradle.taskGraph.beforeTask { Task task -> if(task.name ==~ /process.*GoogleServices/) { android.applicationVairiants.all { vairiant -> if(task.name ==~ /(?i)process${vairiant.name}GoogleServices/){ copy { from "/src/${vairiant.flavorName}" into '.' include 'google-services.json' } } } } } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.