In addition same package name and the old apps keystore,Read :
http://android-developers.blogspot.com/2011/06/things-that-cannot-change.html
A subtle but important aspect of what constitutes a break in compatibility is the android:name attribute of your activity, service, and receiver components. This can be surprising because we think of android:name as pointing to the private code implementing our application, but it is also (in combination with the manifest package name) the official unique public name for that component, as represented by the ComponentName class.