I have GCM sample android gradle project. Its worked well, when I add 2 flavors a push notification stopped to work. My compilation manifest (it’s taken from appbuildintermediatesmanifestsexdebug
) file is below:
<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>
What should I do to fix this problem? Please help.
UPD1. I am using gradle v.0.12+. i think my final manifest file looks good, GCMRegistrar.checkManifest(this); – without errors, but GCMRegistrar.isRegistered(this) always false. =(
UPD2. My first flavor project with original package name (as project in main branch) works well, but second flavor with changed package doesn’t work (registrationId for push is still empty), but in manifest file all permitions are correct.
Answer
I found solution in this post GCM not registering when changing package name with Gradle. I just override BroadcastReceiver, if anyone can explain why it helpes please tell me.