There’s an interesting article at Wired on Football Manager Handheld and its 9:1 piracy rate. Piracy isn’t new. All platforms I have worked on, right back to Windows CE in the 90’s, suffered from severe piracy. Somehow, games always seem the worst affected. There’s some correlation between the kind of people who like games and the mindset of people who think it’s acceptable to a) crack and b) download cracked games. Android doesn’t help in that it’s one of the easiest platforms to pirate.
However, the developers of Android paid apps can do better. There’s seems to be a general lazyness of developers at the moment. Whether it’s blind porting or iOS apps, incorrect use of synchronous calls, safe coding or anti-piracy, the attitude seems to be to do as little as possible. People employing developers are also at fault for not putting enough effort into choosing Android developers.
To combat piracy, the first line of defence is to use the License Verification Library (LVL). Make sure you implement the DeviceLimiter policy to limit the number of devices that can use a single license. Also read the Google’s tips on how to make your app and the LVL more tamper resistant.
If you want to go further (or distribute outside Google play where the LVL isn’t available), then think about how you might tie essential functionality for that user (e.g. top scores, multi-player, download new levels) to your server such that they only get these if they have paid. How do you know, server side, that the user has paid? This depends on which app store you are using. For Google Play, you can send the initial LVL response to the server. If a hacker has bypassed your LVL code then the app won’t have a LVL response and the user won’t get the server side supported app features.