12

I'm developing an application, where it will have a paid (full) version and a free (lite) version.

In another application developed for Android it is possible to manage this easily with flavors (productFlavors), where I can configure the replacement of any part of the application. For example: I can configure an applicationId and flag boolean PAID_VERSION, for each application as follows:

productFlavors {
    free {
        applicationId 'com.mycompany.myapp.free'
        buildConfigField "boolean", "PAID_VERSION", "false"
    }
    paid {
        applicationId 'com.mycompany.myapp.paid'
        buildConfigField "boolean", "PAID_VERSION", "true"
    }
}

And in the code I can check the PAID_VERSION flag of the following way:

boolean b = BuildConfig.PAID_VERSION;

And if I want to change the icon and application name by version I should specify in the packages (applicationId) of each flavor the specific icon replacing the default, for example:

String resource application name:

Free path: /free/res/values/strings.xml

<resources>
    <string name="app_name">My App - Free</string>
</resources>

Paid path: /paid/res/values/strings.xml

<resources>
    <string name="app_name">My App - Paid</string>
</resources>

Icon Resource:

Free path: /free/res/drawable/icon.png (Imagem Free)

Paid path: /paid/res/drawable/icon.png (Imagem Paid)


Question

How would it be possible to have a similar configuration to that for a Ionic2/Cordova project, which is possible with the same code base generate 2 applications with a few different features, to be distributed in stores simultaneously and independently?

Vadim Kotov
  • 8,084
  • 8
  • 48
  • 62
Fernando Leal
  • 9,875
  • 4
  • 24
  • 46

1 Answers1

5

Well, you may have stumbled into this already, but this guy created this Gulp tasks to modify the config.xml file on build-time for this purpose.

Also in this forum topic he explains how to obtain the current version for conditional in-app code.

Another related topics are: Configure build flavors for cordova which recommends using Cordova Hooks to modify the config.xml file based on enviroment variables, as discussed in here: Using environment variables / parameterizing config.xml

Community
  • 1
  • 1
Italo Ayres
  • 2,603
  • 2
  • 16
  • 20