The following is an excerpt from the Development chapter of our app marketing guide.
Offering a free version of your app (which you can monetize with ads) is a great way of allowing users to test the functionality of your app.
People are more likely to purchase something they’ve tried than something they have to buy before evaluating.
However, you also need to provide incentives for the user to buy the paid version of your app. The best way to do this is to reserve key aspects of your app’s functionality for the paid version.
Here’s how you protect your app and build a free version with little added work:
1) Activation Codes
Androidlicenser.com is a great option for protecting your app with an activation code, which helps combat piracy, though they do charge a monthly rate for their services.
If you sign up with androidlicenser.com, they’ll email a unique, single use, 6 digit activation code to the user. When the user inputs the code into your app, they’ll get access to the full version.
Keep in mind that their service provides no functionality outside of generating and emailing the activation code.
2) Ant Scripts
Ant scripts allow you to build a free and full version of your app using the same code base. (I use ant scripts in most of my own apps.)
The ant script essentially uses a series of regular expression search/replace commands that (a) change the package name of the app and (b) flips a global boolean that indicates whether this is the full version or free version of your app. (Your code should use this global boolean to determine which features are enabled.)
Additionally, the ant scripts can automate obfuscation of your code to protect from hacking and piracy efforts.
Creating An Effective Free Version Of Your App
When it comes to choosing which features to exclude from the free version, you have to strike a careful balance. The free version needs enough functionality to please the user while also being incomplete enough to push them toward purchasing the full version.
Include just enough features to prove to the user that your app does indeed deliver on its promises, and reserve the remainder for the full version.

