Please read this official blog entry on Google developer blog:
http://android-developers.blogspot.be/2011/03/identifying-app-installations.html
Conclusion For the vast majority of applications, the requirement is
to identify a particular installation, not a physical device.
Fortunately, doing so is straightforward.
There are many good reasons for avoiding the attempt to identify a
particular device. For those who want to try, the best approach is
probably the use of ANDROID_ID on anything reasonably modern, with
some fallback heuristics for legacy devices
.