I could fix it.
Now that I had a few hours to look into the code, I saw what was missed in 
the original implementation.
The code currently was trying to stick to the defaults, while it should 
just implement a custom broadcast receiver returning the location of the 
intent service, which is not in the application root by default, and in our 
case it is anyway in a project library :)

On Wednesday, April 30, 2014 5:34:47 PM UTC+2, Xavier Ducrohet wrote:
>
> Are you sure the service class has to be in the package name declared by 
> the app? That sounds weird.
>
>
> On Wed, Apr 30, 2014 at 8:32 AM, Diego Costantini 
> <[email protected]<javascript:>
> > wrote:
>
>> yes, that part should be solved by injection through the new merger :)
>>
>> however, unless I messed up with some relative path .GCMIntentService in 
>> the manifest (I was surprised by how the new merger uses the package in the 
>> manifest rather than from gradle with smart replacement), the file needs to 
>> be in my/application/flavor1/type1/GCMIntentService.java to be able to 
>> register to GCM, which makes all the tricks in manifest not enough (this is 
>> true for each variant i want, so one of those java files exactly the same, 
>> just in another folder)
>>
>>
>> On Wed, Apr 30, 2014 at 5:18 PM, Xavier Ducrohet 
>> <[email protected]<javascript:>
>> > wrote:
>>
>>> You're talking about 
>>>
>>>  <category android:name="com.my.app.flavor1" />
>>>
>>> right?
>>>
>>> The new manifest merger has a placehold for the final package name of 
>>> the app so you can do
>>>
>>>  <category android:name="${packageName}" />
>>>
>>> and it'll get automatically replaced with the final package name.
>>>
>>>
>>>
>>> On Wed, Apr 30, 2014 at 7:34 AM, Diego Costantini 
>>> <[email protected]<javascript:>
>>> > wrote:
>>>
>>>> Hi Xavier,
>>>> I just went through the description of the new merger and it seems very 
>>>> nice.
>>>>
>>>> However I came to realize that it alone might not save me from the GCM 
>>>> issue.
>>>>
>>>> I will have to test it again, but if I remember correctly, GCM grants 
>>>> permission only to the application with its same package name, meaning 
>>>> that 
>>>> it needs to be in a specific folder structure for each flavor and 
>>>> buildType.
>>>>
>>>> So, for example, if I keep GCMIntentService in main (again, where it 
>>>> belongs in my opinion), it will not register because its package will be 
>>>> my.application and it won't be accessible from the application 
>>>> my.application.flavor1.type1 (and I would find out only by guessing at 
>>>> logs 
>>>> at runtime, btw).
>>>>
>>>> In fact now I have a GCMIntentService in each possible combination i 
>>>> need (it gives me the creeps).
>>>>
>>>> Could you please tell me I am doing it wrong? I cannot believe the GCM 
>>>> implementation is so "wrong".
>>>>
>>>> Anybody else able to have one single GCMIntentService.java working for 
>>>> multiple build variants?
>>>>
>>>>
>>>> On Tuesday, April 1, 2014 6:52:54 PM UTC+2, Xavier Ducrohet wrote:
>>>>
>>>>> There's no easy fix right now but we're working on a new manifest 
>>>>> merger that will support this use case.
>>>>>
>>>>>
>>>>> On Tue, Apr 1, 2014 at 8:41 AM, Diego Costantini <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hi guys,
>>>>>> is it possible to have this combination working without file 
>>>>>> manipulation in gradle?
>>>>>>
>>>>>> The problem is that GCM wants to be in the manifest, with an absolute 
>>>>>> package name, which instead changes based on the buildvariant.
>>>>>> All of this because I couldn't have GCM working while keeping 
>>>>>> GCMIntentService.java in main, where it belongs.
>>>>>>
>>>>>> Do you know how I could solve this?
>>>>>>
>>>>>> Here is the manifest I had to force for the particular buildVariant I 
>>>>>> need now:
>>>>>>
>>>>>> <?xml version="1.0" encoding="utf-8"?>
>>>>>>> <manifest xmlns:android="http://schemas.android.com/apk/res/android";
>>>>>>>     package="com.my.app.flavor1" >
>>>>>>>
>>>>>>>     <permission
>>>>>>>         android:name="com.my.app.flavor1.debugQA.permission.
>>>>>>> C2D_MESSAGE"
>>>>>>>         android:protectionLevel="signature" />
>>>>>>>
>>>>>>>     <application>
>>>>>>>         <service android:name="com.my.app.flavor1.debugQA.
>>>>>>> GCMIntentService"/>
>>>>>>>         <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.my.app.flavor1" />
>>>>>>>             </intent-filter>
>>>>>>>         </receiver>
>>>>>>>     </application>
>>>>>>> </manifest>
>>>>>>>
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> -- 
>>>>>> You received this message because you are subscribed to the Google 
>>>>>> Groups "adt-dev" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>> send an email to [email protected].
>>>>>>
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> -- 
>>>>> Xavier Ducrohet
>>>>> Android SDK Tech Lead
>>>>> Google Inc.
>>>>> http://developer.android.com | http://tools.android.com
>>>>>
>>>>> Please do not send me questions directly. Thanks! 
>>>>>
>>>>  -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "adt-dev" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected] <javascript:>.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>
>>>
>>> -- 
>>> Xavier Ducrohet
>>> Android SDK Tech Lead
>>> Google Inc.
>>> http://developer.android.com | http://tools.android.com
>>>
>>> Please do not send me questions directly. Thanks! 
>>>
>>> -- 
>>> You received this message because you are subscribed to a topic in the 
>>> Google Groups "adt-dev" group.
>>> To unsubscribe from this topic, visit 
>>> https://groups.google.com/d/topic/adt-dev/KYldXW-YQ0E/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to 
>>> [email protected] <javascript:>.
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>  -- 
>> You received this message because you are subscribed to the Google Groups 
>> "adt-dev" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
>
> -- 
> Xavier Ducrohet
> Android SDK Tech Lead
> Google Inc.
> http://developer.android.com | http://tools.android.com
>
> Please do not send me questions directly. Thanks! 
>

-- 
You received this message because you are subscribed to the Google Groups 
"adt-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to