When you write an app which is supposed to come in two versions, a free version (maybe with advertisement) and a premium version (without advertisement but much more features), how do you manage those versions in your IDE? Do you treat them as two separated projects? I think that would not be a good idea because every time you change something which is part of both versions you have to change it twice. But if you develop only with one project how do you export the two different apps? The apps should have different manifest files (and probably also other differences, at least a boolean flag which tells the program if it is the free or the premium version). That's not possible with one project, isn't it?
So I'd like to know how you professionally develop such apps.
Furthermore, I'd like to know how you ensure that installing the premium version will override the free version (if installed).
To overcome the duplicate code issue, you put the majority of your code in libraries. With Eclipse it's very easy to convert a project in a library, and you can reuse any component, including Activities and resources (not assets).
Installing the premium version of an app does not override the free version, because they are different packages, and are treated as different applications (not as different versions of the same application)
You could also consider implementing in-app purchasing to unlock premium functionality.
In many build systems (including Grade, the default for Android Studio), you can configure your builds to have "flavors" or "build variants". This flavor can do everything from change what libraries/constants are used during the build to changing the package name of the app. Thus, what I like to do is configure a development build (lots of logging, which might impact performance or leak data in a production build), a release build, and sometimes multiple release builds for different distribution channels (Nook vs Play etc).
In terms of having a free vs paid app, I prefer the user experience of getting a free app to try and then paying to unlock it to having to uninstall/install. But if the distribution channel doesn't support in-app payments then you can't really do that, and I'd recommend using build flavors to build for multiple packages.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With