I have a production app on the Google Play store. I have also released a beta version to a limited group using the Google Play beta feature. However, if I make changes to the production app, I then need to re-build and re-release the beta app because it gets overwritten by the new production version. This is very frustrating when I want to make some bug fixes on production without changing the beta. Is there any way to release a new production app without invalidating the current beta?
The basic problem is that Google Play updates based on build number (versionCode), and doesn't care which channel the .apk comes from.
Your only option is to not pickup sequential build numbers, but instead leave gaps. For example if your prod is versionCode="10", make the beta build versionCode="20" which will give you the chance to publish nine more minor prod releases before you hit the issue of invalidating the beta build.
Though there are two problems with this approach:
- Obviously it does not scale very well.
- It makes it hard to manage the build numbers, as now you have to keep a record of what build has reached which build number.
- If you don't invalidate the beta build, your beta users will still have the bugs you just fixed in the new prod build until you upgrade them.
Note that if you don't have permission changes that prevent auto-upgrade, invalidating the beta build and publishing a new one is not that much of an issue; most users won't even notice that they were upgraded (unless your app tells them explicitly).
I believe the reason google requires that your new production version of the application override the beta is due to the basic development cycle. Typically applications start in the Alpha stage, then beta, and finally end in production.
The beta version is overwritten due to the fact that the next logical step in the cycle from beta is release. When you re-submit the beta version, it would be the current code revision as the production version, alongside bug fixes that are being tested.
The scheme is very simple:
Google Play uses versionCode to indicate the apk currently available to a user. It doesn't matter if it is a production or a beta release. Also it is not allowed to upload a build with versionCode lower than it was in some previous build.
So in your case you need to upload a production version and then upload a beta release (even if its only change is versionCode). Occasionally some of your beta users may download a production release, but they will get the beta release a bit later anyway.
Related
I'm publishing an app through Play Store. The app is developed using Expo.
Currently, the production version has internal version code of 4, version name of "1.0.3" and the app has been updated 7th of August.
I recently made some fixes to the app and then built an app bundle with internal version code of 5 and version name of "1.0.4". I published that version to closed testing via the alpha track. Now, clients with no access to the alpha track are getting the alpha version, while the product page in Play Store still shows that the app was last updated 7th of August and has version name of "1.0.3".
What is happening here? Some sort of misunderstanding on my side regarding use of version codes?
Okay, I found out what is causing this. Seems that I didn't read expo documentation carefully enough.
I have been building the releases with command expo build:android -t app-bundle, which, as documented here, also publishes the updates as an OTA update:
Please note: When you run expo build, Expo automatically publishes
your app (with expo publish). In order to avoid accidentally
publishing changes to your production app, you may want to use release
channels.
Since I didn't specify a release channel when building the app bundle, the updates were published to the default release channel.
I have an Android App on playstore. Now I have made so many changes to this app and want to update my app. I know simple update is easy but the thing I want is that to publish the new version in beta by keeping the old version remains same. In simple word, I want to publish a new build with beta version that it don't effect the older version?
Note: Old version is not in beta.
Releasing app update to beta channel (open testing) doesn't remove the production release. The beta update will become available as an update to testers only, everyone else will have access to the production release.
For more on releases and roll-outs. Read more here
Once I have put an APK for the beta version can I rollback the APK if it contains any changes or errors in the same version?
You can't rebuild a new version of an apk from the apk itself.
Have the app developer do the following:
Rebuild project in its previous state with higher version number (must be higher than all previously submitted versions)
Resubmit
From Google's Android "Developer Console" page:
Note that rollbacks aren’t supported due to the app versioning
requirements of the Android platform. If you need to rollback,
consider launching a previous APK with a new version number. However,
this practice should be used only as a last resort, as users will lose
access to new features and your old app may not be forward-compatible
with your server changes or data formats, so be sure to run alpha and
beta tests of your updates.
You can not Rollback your previous APK you need to upload new version with bugs fixed..
The user can use the OPT-IN url to opt-out of the testing track, this works for both open and closed tracks :)
I have uploaded my application on google play store under beta testing rollout for test purpose to find out if there are impersonation kind of issues.It got published. Now I have a very minor change in my application and would not like to unnecessarily change the version. So can I sign the apk and directly publish it on production .And what will happen to this beta production,anyway I do not wish to retain it,Or should I again upload it with new version on beta test and publish it to production? Any help in which should be the proper procedure is appreciated. Thank you :)
You will not be able to publish the same version code twice to the same release agent. BETA can have versioncode 1 for example and then Production can have versioncode 1, But you can not rebuild and release versioncode 1 again. It will not allow it.
Yes you can release two completely different builds to release vs beta and have both be version 1, but you are creating ambiguity.
BETA users will always have the latest versioncode app whether it comes from BETA or Release, so in this scenario it will likely default to production app as it will assume that BETA was promoted to production due to matching version code. Hope that makes sense.
Also, you do not have to change your version String so if you are going out as 1.00 you can still leave it as 1.00. This is the version string that you show to the user and name the release, you can reuse that as many times are you want, The version code is an arbitrary hidden integer value that google play makes you supply so it knows if it is newer or not. It is not visible to the user other, they will see your version String.
It depends what you mean by version. There is a version string which may be the same and there is a version number which must be different.
I sign the apk and directly publish it on production. And what will happen to this beta production? Anyway I do not wish to retain it. Should I again upload it with new version on beta test and publish it to production?
For your new build, increase the the versionCode to 1 more than the previous release's versionCode. Directly publish that to production. The version in the beta phase will by shadowed by the production version. Anyone having the beta app will see an Update, wherein they can update to the production version. In your Beta section on App Releases section, it will show like this:
I have a production version and a beta version of my app. I'm one of my beta testers. I want to rollback the version on my phone to the production version so that I can configure some settings then reinstall the beta to ensure the upgrade is working properly.
I can't seem to figure out how to re-install the production version though. I've even tried leaving the beta test and I can't get Google Play to notice that I'm not a beta tester anymore. (deleted cache and data, rebooted phone, etc).
With iOS I can install the production version from the App Store and the test version from Test Flight. How do I do that on Android?
Use different account (new google account) from Google Play to download production, then enroll in beta and try to update. this is the quickest way.
Note: you probably facing this problem because you are an internal tester and a closed beta tester too.
Toggling Developer settings helps to install the production and then switching developer settings back on gives the option to update to beta once again.
EDIT: Actually this helps only to get the change to reflect if test track is paused or resumed
Found the fix here https://android.stackexchange.com/a/245371/374079