I have one android app (e.g MyApp) in the Google Play Store, and at the moment the package is from the RC build in our pipeline, but we also want to publish package from CI build for testers. Is it better to create a new app called MyAppTest in play store which receives the package from CI build? Or is it better to just upload the package from CI build to "MyApp" under internal testing track? In the package from RC build, the version is like 1.0.0-RC1, and the package from CI build the version is like 1.1.0.1.
What is the best practice for this problem?
You should keep all into a single project! And use the different levels of testing of google play (alpha, closed beta, open beta).
Usually there are some levels of testing:
Internal testing (Release Candidates)
Open Beta for selected users
You should try to scale the same version from internal, to open beta to production. Most versions will be transitory, and won't reach production at all.
But you should keep the semantic versions all the way, some devs like to add -RC or -beta after the version to name, to tag as "in testing" version.
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.
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 :)
Google Play has changed APK menu to Version Manager, or something like that (my Store is in spanish).
Now i've read how to upload multiple APKs to production, but what if I want to upload multiple APK (x86 and armv7) for BETA testing? I'm using ionic with Crosswalk Project and it generates 2 apks.
In previous version you had to enable advanced mode, but I don't see advanced mode in this Version Manager.
Can anyone point me in the right direction please?
Thank you for your time!
Can I have both production and beta versions of my application available to the selected users?
The use case is the following, there are some users that are willing to try new versions of my app, but the are already using stable version for work. Beta version may have bug/crashes, making it inadvisable for work use. Therefore it would be nice to have both versions installed.
If beta APK is published separately (e.g. on my website), the user has anyway to remove the stable APK.
If beta APK has different package name, I have to fork the repository, and then manage merge, which I what to avoid.
Is there a standard way to do that on Play Store?
Can user select which version to install from Play Store?
Is there some tool that may simplify the package renaming?
I am looking for a method that I can use to automatically publish an application to both the alpha and beta testing streams on the Google Play store, from my CI server.
My CI setup is as follows:
The Android app is written using Android Studio (using Eclipse really isn't an option for us).
The build scripts are written in Rake, and run the Gradle tasks, as well as Calabash-Android tests.
The build server is Teamcity 8+, that is currently hosted locally (though we could be moving across to Jenkins in the cloud).
Having scanned through stackoverflow for an answer to this question, the only one found is API to automatically upload apk to Google Play? the answer to this is however over a year old, and as we all know a year is a lifetime in software development, so I hope things may have improved some what.
I also have a sub-question, after publishing to these two streams, how long should it take for testers to see them in the store? I'm hearing 24 to 48 hours, which considering apps published to production only take a couple of hours seems a little odd.
Edit
The plugin below no longer works because Google shut down old versions of their API. Consider using Gradle Play Publisher instead.
Update: The plugin is now available as com.savillians.gradle:android-publisher:0.4 from maven central. Add it to your buildscripts definition in build.gradle and apply it as I stated below.
I had the exact same question, and thanks to #edovino's comment and the Google Play API samples, I was able to create a gradle plugin that does the publishing to any track you wish for any flavor/variant you wish.
See the sources here: https://github.com/bluesliverx/gradle-android-publisher
I'm working on publishing this to maven central so it can be used in a build script, but for now you can grab the android-publisher subdirectory in the repo, put it in the root of your gradle build, and rename the folder to buildSrc. Use the following line in the build.gradle file for the android project you want to publish:
apply plugin: com.savillians.gradle.androidpublisher.AndroidPublisherPlugin
You can then set your publishing settings using an androidPublisher block in the build.gradle file.
android {
...
}
androidPublisher {
applicationName = "Company-Name-Product-Name/1.0"
packageName = "<package name>"
serviceAccountEmail = "<service account email>"
serviceAccountKeyFile = file('<p12 keyfile - NOT the json file>')
track = "alpha" // default, don't need to specify
variantName = "release" // default, don't need to specify
}
Make sure the service account you create has "release manager" permissions, download the p12 key file and put it in the project's directory. Then run this command:
gradle androidPublish
That will send it to Google Play using the credentials you specified. Good luck and let me know if you have questions since this is brand new.
If you're using Jenkins, the Google Play Android Publisher Plugin lets you automatically upload alpha or beta builds.
You can also use it to "promote" an APK from alpha, to beta, or from beta to a staged rollout, for example.
Multiple APK support and the ability to upload (or reuse) expansion files are included as well.
By integrating with the credentials functionality in Jenkins, the plugin can securely access your Google Play account(s) without having to check the private key in to the repository or similar.
There is now a straight forward CLI tool you can call in a build server build step:
https://github.com/codebysd/java-play-store-uploader
It uses google publisher API and uses the new JSON key format.