Search code examples
androidpush-notificationxamarin.androidandroid-c2dm

How to deploy an Android app update to Market with different cased package name


Short question

In Mono for Android (MonoDroid) - or Android apps in general - are identical package names with only case variations considered to be equal? E.g. 'Application.Application' = 'Application.Application'. The question refers specifically to equality as considered for the Android market application update mechanism. Not to equality in general.

If NOT then is there another way to change the package name but still have the Android Market consider the application as the same app? We want to insure end-users don't need to install a completely new app, but can use the standard Market update mechanism.

More detailed problem description

Our application was put in the Android Market using a package name containing upper case symbols, e.g. 'Application.Application'. So - in hindsight - we did NOT follow the advised Java package naming conventions. However the original application functioned without any further problems.

We have now extended our Android application with push notifications. During testing a problem surfaced that sending push notifications through the Google C2DM service did not work using the upper case package name. Only after changing the package name to contain no upper case symbols BEFORE the dot (.) did push notifications come through in our test environment. E.g. 'application.Application'. To achieve this we changed the package name in the manifest.xml file and submitted a new request for the differently cased package name via the C2DM sign up form.

We did not foresee this problem. But we would now still like to deploy a new version of our app through the Market but are concerned about being able to use the conventional update mechanism. We don't want to distribute the application as a completely new app.

Can we realise this? And if so, then how? 1. Can we just go with the 'application.Application' package name? 2. Or is there some mechanism to allow a changed package name? We might then further change our package name so it conforms to standards, e.g. 'ext.domain.application'

  • Note we have NOT deployed our new application. We want to solve this package name issue before deploying server side changes to production (e.g. the push notifications 'provider'), since server-side code also contains the package name for sending the messages.
  • Further note that the app is build using MonoDroid and uses the C2dm-Sharp library to send and receive push notifications. Perhaps the issue originates there, although it's seems a general problem.

Solution

  • I've done some research, and found two different apps on Google Play, with two package names differ only in case.

    check out:

    https://play.google.com/store/apps/details?id=Jk.app.app

    vs

    https://play.google.com/store/apps/details?id=JK.app.app

    Conclusion: Google Play package names are case sensitive - so what you're trying to do is not possible.