Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Best approach for Free and Paid versions of Android application?

I have developed an Android app which I want to be available both as free and paid version. What is the best approach?

I can think of three solutions:

  1. Split the project into two branches and maintain both of them.
  2. Create a library project and have two additional projects, one 'Free' and one 'Paid' version.
  3. Use in-app billing.

Q: Which solution is the best? And why?

Some things to consider:

  • My app is around 1.5 MB (AdMob excluded).
  • I'm currently targeting Android 2.2 (Froyo).
  • I do have some server APIs that would benefit from knowing if the client is paid or not.
  • I seek to avoid my app being cracked. Not sure if this is a real problem these days...
like image 249
l33t Avatar asked Jan 01 '12 19:01

l33t


People also ask

Which application provides all kinds of paid and free apps?

Blackmart: The king of the android market and the best store to download nearly all free and paid apps, Blackmart is a must need for all Android Users who want to taste every android app. The app is also highly customized and user-friendly, having categorical divisions of Android Apps just like you see on Play Store.

Which application provides all kinds of paid and free apps in Windows 10?

Microsoft Store has nearly everything for your Windows device, including the latest games, films and TV programmes, creativity software and apps1.

Which one is best for Android app development?

1. Java. Firstly Java was the official language for Android App Development (but now it was replaced by Kotlin) and consequently, it is the most used language as well. Many of the apps in the Play Store are built with Java, and it is also the most supported language by Google.


3 Answers

I struggled to actually implement this, but figured it out. I feel the best approach is to use the Android Library feature, and differentiate with an app name string value in each project simple paid=true string value (or key file if you want a more complex solution).

Exact steps:

Library

Use this to get a 'common' copy of code, then multiple android projects that reference it`

Purpose:

Free & Paid version on Google Market

Results:

One Android Project (library) with ALL code, with 2 additional Android Project that reference code, but no actual classes. strings.xml differentiates App names (Paid & Free or whatever)`

Create Library

  • Create new project & during steps to create select option to make library
  • Convert existing: right click project->Properties->Android->Check box next to library.
    • Might want to refactor/rename as well, but not needed

Create new project to utilize library

  • Create new Android Application Project
  • Open properties for this project->Android->Add existing library to project
  • Additional Libraries if exist: Dont copy these (jar) files into new project!
    • Properties of new project->Build Path->Configure Build Path->Libraries Tab->Add Jars->Expand Library you're linking to->libs->Select libary (ie libGoogleAnalytic)->OK->Order & Exports tab->Check new library->ok
  • Manifest of new project: Need to RE call out ALL info from library, especially activities, appending FQDN from library
    • ie: android:name="com.blah.appname.library.MainActivity" (basically copy/paste everything from library manifest to new project manifest & adjust package name to reference library instead)
  • Make sure there aren't any duplicate libraries in new project lib folder vs library project! If so, delete from new project & adjust build path per step above
  • Do not need ANY classes/java files!
  • Replace resources only if you want them replaced
  • Delete all files in new Project in res\drawable\ so we utilize the ones from the library
like image 116
Kevin Avatar answered Oct 21 '22 10:10

Kevin


I'm not a big fan of using ads in apps since unless your market share is already quite big, the money you get is gonna be tiny compared to the amount you will annoy your users.

I prefer a model of writing a basic app with all the core features, then adding extra functionality to a paid app and charging for that (of course using an android library project for sharing the bulk of the code). That way people who use your app and like it can support you by paying for it and then get a bonus of some extra features.

(disclaimer: this post is personal opinion based on my own experience and anecdotal evidence I've heard)

like image 42
stork Avatar answered Oct 21 '22 10:10

stork


Your 3rd approach, In-app billing, provides the most flexibility, but it's horribly complex (and thus error prone).

Your 2nd approach, a shared library project looks like the best compromise.

If you can use the same APK for both free and paid versions this can possibly be the best of both worlds.

like image 37
Bill The Ape Avatar answered Oct 21 '22 09:10

Bill The Ape