I have an app that is currently on the Play Store, and I would like to publish an update that will replace the existing app with another app that is an improved version of the old one. They were developed separately, so the two apps are way different, although they serve all the same purposes.
What needs to be the same in the new version and the old version for me to be able to publish is as an update instead of a brand new app?
The case you are describing sounds like a complete rewriting of the application. This is perfectly in line with the application update process of Google Play.
Google-play determines that an application is an update based on two criteria only:
the package name of the app
and its version code
To be considered as an update, your new app should have exactly the same package name as the former one ("com.example.myapp"), and its android:versionCodeshould be higher, in your AndroidManifest.xml file. Of course, your APK should be signed with your account's private key, like any application you publish under your account.
All the rest is up to you.
If they share the same unique key, you can overwrite the existing app with the new one. It doesn't make any difference how much it's changed. Play will automatically take care of notifying exising users of updates, and depending on their settings, update them automatically.
If your new version does NOT share the same unique key, you have no choice but to put up a new app.
Related
My customer asked me to publish a new version for an app for both iOS and Android which used to be maintained by their former partner. Now that I'm going to take over the responsibility for this app, I wonder which data I need in order to publish a new version. The app will be completely redone, which means that none of the existing code will be used.
For Android: I think I'll need the originally used keystore and key from the original partner, right? Anything else?
For iOS: I honestly have no clue what I need. Do I need to originally used provisioning profile? Would that even work?
Note: The account under which the app is published belongs to my customer, not to the partner.
Thanks for any advise!
Your customer will need to give you access to their developer account, which you'll use to sign in on Xcode. Then the new project you create will need to have the same bundle id as the current live app. That should be all you'll need to do, as automatic signing will take care of the rest (including provisioning profiles)....assuming Xcode doesn't complain about the bundle id, in which case you might have to unlist and delete the current live app. Doubt you'll have any issues though
I have published an android app in the store, however, we lost the keystore, when I unpublish the current app and try to republish another app with the same name I've got a message saying that I couldn't publish an app with the same name, is there a manipulation to do ?
Thanks :)
Every application on Google Play needs to have a separate application id (like com.company.awesomeapp). So if you lost your keystore and can't upload the application with the id you had before, you will have to change the id (say, com.company.awesomeapp2).
One small note, now the application id is not the same as the application package. So you may continue to use the old application package internally (for the source files and in the manifest), but you need to change the applicationId in gradle.build to something new. If you reference the application id somewhere in the manifest, you can use a placeholder: ${applicationId}.
The solution for my problem was to rename the previous application and create an app with the same name.
I obviously had to change the app id also
Even though your old app is not available for download anymore, the Play Store still requires a different applicationId, because some users might still have the old app installed on their devices (it still may be 'supported' in the sense that users can buy in app purchases etc.), and it's the Android OS that explicitly denies installation of packages with the same name, and allows updates when the id and certificate is the same.
You could imagine a situation where you delete an app from the play store, and if it would allow creating a new one with the same applicationId, and someone got hold of your keystore and certificate, that person could upload a completely different app and trigger updates to users with your old app. Now, that would be very bad and simple solution is just to not allow same applicationIds.
Our contracted Android developer provided us with the source code of the work performed for us, as per our contract. After the contract finished, the developer became busy and is now not reachable. We are moving to another developer to maintain the application. However, we do not have the first developer's keystore so the application is not allowing us to update it.
Is there anyway for us to maintain this application if we cannot get ahold of the original developer? We have lots of customers who have the app with data they have generated, and they need our updates.
If you have push notification feature in your old App then you can send a push to all your user that there is another updated version is available.
And Just upload updated version with different package name. And even you can send play store link in that push message as well. Most of people use this technique and they got success to move all user from old app to new.
No you can't update your app on the store without the published keystore.
You can publish the app with another name and keystore (a new app so with a different package name) but you can't update it.
I have an android app in the Google Play Store. I am working on a new rev and want to change the package name. Is that allowed?
My application does not have a big audience yet. Is there a way to replace it? As in, may I discontinue the existing one, and replace it with a new one?
According to this blog post from Android Developers blog, no, you cannot change package name unless you're okay with publishing it as a new app in Play Store:
Once you publish your application under its manifest package name,
this is the unique identity of the application forever more. Switching
to a different name results in an entirely new application, one that
can’t be installed as an update to the existing application.
Android manual confirms it as well here:
Caution: Once you publish your application, you cannot change the
package name. The package name defines your application's identity, so
if you change it, then it is considered to be a different application
and users of the previous version cannot update to the new version.
If you're okay with publishing new version of your app as a completely new entity, you can do it of course - just remove old app from Play Store (if you want) and publish new one, with different package name.
If you have the code, change the application package name, versionCode, versionName & update your app..
There is no otherway
I would like to know whether it is technically possible, not whether it is easy or not, to change the actual package name of an Android app that is on Google Play. What I mean by package name is the name that will show up in the URL. Please, can anyone tell me why this is / is not possible?
Thanks!
From Dianne Hackborn:
Things That Cannot Change:
The most obvious and visible of these is the “manifest package name,” the unique name you give to your application in its AndroidManifest.xml. The name uses a Java-language-style naming convention, with Internet domain ownership helping to avoid name collisions. For example, since Google owns the domain “google.com”, the manifest package names of all of our applications should start with “com.google.” It’s important for developers to follow this convention in order to avoid conflicts with other developers.
Once you publish your application under its manifest package name, this is the unique identity of the application forever more. Switching to a different name results in an entirely new application, one that can’t be installed as an update to the existing application.
More on things you cannot change here
Regarding your question on the URL from Google Play, the package defined there is linked to the app's fully qualified package you have in your AndroidManifest.xml file. More on Google Play's link formats here.
Nope, you cannot just change it, you would have to upload a new package as a new app. Have a look at the Google's app Talk, its name was changed to Hangouts, but the package name is still com.google.android.talk. Because it is not doable :) Cheers.
As far as I can tell what you could do is "retire" your previous app and redirect all users to your new app. This procedure is not supported by Google (tsk... tsk...), but it could be implemented in four steps:
Change the current application to show a message to the users about the upgrade and redirect them to the new app listing.
Probably a full screen message would do with some friendly text. This message could be triggered remotely ideally, but a cut-off date can be used too. (But then that will be a hard deadline for you, so be careful... ;))
Release the modified old app as an upgrade, maybe with some feature upgrades/bug fixes too, to "sweeten the deal" to the users. Still there is no guarantee that all users will upgrade, but probably the majority will do.
Prepare your new app with the updated package name and upload it to the store, then trigger the message in the old app (or just wait until it expires, if that was your choice).
Unpublish the old app in Play Store to avoid any new installs. Unpublishing an app doesn't mean the users who already installed it won't have access to it anymore, but at least the potential new users won't find it on the market.
Not ideal and can be annoying to the users, sometimes even impossible to implement due to the status/possibilities of the app. But since Google left us no choice this is the only way to migrate the users of the old apps to a "new" one (even if it is not really new).
Not to mention that if you don't have access to the sources and code signing details for the old app then all you could do is hoping that he users will notice the new app...
If anybody figured out a better way by all means: please do tell.
No, you cannot change package name unless you're okay with publishing it as a new app in Play Store:
Once you publish your application under its manifest package name, this is the unique identity of the application forever more. Switching to a different name results in an entirely new application, one that can’t be installed as an update to the existing application.
Android manual confirms it as well here:
Caution: Once you publish your application, you cannot change the package name. The package name defines your application's identity, so if you change it, then it is considered to be a different application and users of the previous version cannot update to the new version.
If you're okay with publishing new version of your app as a completely new entity, you can do it of course - just remove old app from Play Store (if you want) and publish new one, with different package name.
If you are referring to com.example.app, no I understand you can't it would be considered a new app
Never, you can't do it since package name is the unique name Identifier for your app.....
Complete guide :
https://developer.android.com/studio/build/application-id.html
As per Android official Blogs :
https://android-developers.googleblog.com/2011/06/things-that-cannot-change.html
We can say that:
If the manifest package name has changed, the new application will be
installed alongside the old application, so they both co-exist on the
user’s device at the same time.
If the signing certificate changes, trying to install the new
application on to the device will fail until the old version is
uninstalled.
As per Google App Update check list :
https://support.google.com/googleplay/android-developer/answer/113476?hl=en
Update your apps
Prepare your APK
When you're ready to make changes to your APK, make sure to update your app’s version code as well so that existing users will receive your update.
Use the following checklist to make sure your new APK is ready to update your existing users:
The package name of the updated APK needs to be the same as the current version.
The version code needs to be greater than that current version. Learn more about versioning your applications.
The updated APK needs to be signed with the same signature as the current version.
To verify that your APK is using the same certification as the previous version, you can run the following command on both APKs and compare the results:
$ jarsigner -verify -verbose -certs my_application.apk
If the results are identical, you’re using the same key and are ready to continue. If the results are different, you will need to re-sign the APK with the correct key.
Learn more about signing your applications
Upload your APK
Once your APK is ready, you can create a new release.