Reputation: 2923
I developed a small game that uses Parse
and push notifications
(GCM, Google Cloud Messaging
). However when I try to upload my app to the Amazon Store, they say that it will be not published in certain devices because it’s using GCM.
So, the solution is easy, just remove notifications
.
The problem I have is that I will like to automate the apk generation as much as I can.
Under iOS (I'm iOS developer, new to Android), I just create 2 targets and using a DEFINE I can modify code according to the target.
I would like to have something similar, so I use another manifest
in the amazon version, and of course I remove the push code.
How can I do that when using Android Studio
?
I suspect I have to use gradle or maybe the concept of module, because when creating a signed apk
in Android Studio
I have to select “app” module
.
Do you have any idea, suggestion or link? Thanks.
Upvotes: 2
Views: 389
Reputation: 1627
You can accomplish this using product flavors. Each product flavor can have its own AndroidManifest, and each flavor's manifest will get merged with the main applications manifest at compile time. See the build variants section of the documentation.
As an example, you can define the following product flavors
productFlavors {
amazon
googleplay
}
Then you can set up the following manifest files
src/main/AndroidManifest.xml
src/amazon/AndroidManifest.xml
src/googleplay/AndroidManifest.xml <-- put GCM permissions here
You can also put all of your Google Play Services code and dependencies into your googleplay flavor, for example:
dependencies {
googleplayCompile 'com.google.android.gms:play-services-location:7.0.0'
}
Upvotes: 9
Reputation: 1006539
How can I do that when using Android Studio?
This is a job for product flavors. Create a google
flavor and an amazon
flavor. Then:
Use googleCompile
, instead of compile
, for your Play Services SDK dependencies.
Have the Play Services metadata only in your google
flavor's edition of the manifest.
Have the code that depends upon the Play Services SDK be in the google
flavor's sourceset. Note that you may need to abstract some hooks to that code out to a NotificationStrategy
class that you implement in each flavor, where the google
one does the Play Services work and the amazon
flavor does something else (or nothing). Your code in main
can then reference NotificationStrategy
and get the right implementation for each flavor.
Upvotes: 3