How do you retire an APK? - google-play

I can't upload a new version of an APK to Google Play because it would supersede an existing version.
So, how do I retire an existing APK so I can upload a new one?
This is the error message that I get...
So, I have to remove version four. But how? The only option I can see to do this is to manually upload the APK to the console at the same time as deactivating the old. In which case, what's the point of the app publisher?

In the Play console you create a release as described here.
In it there are 3 options:
APKs to add
APKs to deactivate
APKs to release
By default your old APK is in the "APKs to deactivate", which is what you refer to as "retire". If it is giving you this warning it is probably that you have decided to retain it.
The purpose of this is to allow a more complicated "Multi-APK" configuration, where you have different APKs supporting different users, eg one for older phones and one for newer phones. If you don't need it, just put your old APK to be de-activated.
In particular (from the docs here)
In the "Apps to retain" section,
view details about app bundles or APKs from your previous release that will continue to be served to users.
Clicking Deactivate moves an artifact to the list of app bundles or APKs that will no longer be served to users.
In the "apps to deactivate" section,
In this section, view details about app bundles or APKs from your previous release that will no longer be served to users.
Clicking Retain moves an artifact to the list of app bundles or APKs that will continue to be served to users.
It sounds like you need to click Deactivate by one of the apps in your retain section.

Related

Google play console remove app from Publishing overview

Google play has removed my app from production. I have made some changes and want to upload a new version to Internal testing.
In the Publishing overview section I can see both versions. The old version in the production and the new fixed version in internal testing.
I want to Send for review my new version, but I don't want to send my old version.
How to remove the old version from the Publishing overview? Can I specify to review only the new version?
You can promote your internal testing version to production with 1% users rollout. In that way, most users won't face the new version, and you will be able to override the old version review.
Steps:
go to Google Play console
select Internal testing from left menu
select Promote release dropdown menu
click on production
write "1" in rollout and release
I have contacted Google development support:
Unfortunately, we cannot deactivate the non-compliant version on your behalf. You will need to release a new compliant APK on the production track in order to deactivate the non-compliant APK. We apologize for the inconvenience this has caused.

Automatic version management using agvtool

Xcode 11 has changed the way that versions are handled.
So far I had two targets, Dev & Prod, each with a separate versions. Prod version would be entirely manual, Dev would be automated:
During a build, a script would run, which then would fetch git tags. One tag would contain information about the latest Dev version. If it's newer, it would update version inside Info.plist just for the Dev target
When Dev would be deployed using a script (create an ipa, resign for in-house distribution, upload), the build version would then be increased. Remote tag containing version information would then be updated
In this way everyone's dev version would get automatically synchronized and managing multiple dev builds would be be easy. Prod would be updated relatively infrequently so it can be managed manually.
However, in Xcode 11 whenver version (or build) is updated inside the General tab, entries in Info.plist are replaced with $(CURRENT_PROJECT_VERSION) and $(MARKETING_VERSION) and Current Project Version and Marketing Version inside the build settings tab is used instead.
So far I would use PlistBuddy in order to read and update versions inside Info.plist, but from what understand now I'd have to use agvtool. However, there are two issues with it:
If it's ran as a Run Script phase, it causes the build process to cancel
It is unable to handle separate versions for two targets (so I cannot just automatically manage Dev, while leaving Prod alone)
I know that theoretically I can still use Info.plist for versioning, but the moment someone changes version manually in the General tab, the whole thing will get messed up (from experience I know that this will happen).
I have two questions:
Is my understanding of the process correct?
Can still have a version management system using agvtool similar to what I had before?

Is there a recommended way to distribute iOS apps to testers prior to publishing on the app store?

I need to distribute my apps to testers prior to submitting them to the store(s). Nativescript builds an apk file that is easily distributed to Android testers. Is TestFlight the recommended way to distribute iOS apps? And should I use the xcode project file to build the app in Xcode in order to submit it to TestFlight. That method seems counter intuitive.
Yes, ideally you would use TestFlight. It's also a perfect way for you to test your distribution build/signing etc since you would upload the exact same build that will end up on the App Store. In fact, if your testing goes well with your users, you can submit the same build that you've already uploaded for TestFlight to the reviewers for the App Store, you don't even need to upload a new build.
As #Dave Wood mentioned, yes, TestFlight should be the way to go forward as you do not need to re-build the app to submit for review to Apple.
Answer to your next question should I use the xcode project file to build the app in Xcode -
No
You can use the below commands to build and publish app to Apple store.
From the root folder of your app
tns build ios --release --for-device --bundle <Your Provision Profile>
this will show the path where it has created the .ipa file, then
tns publish ios --ipa <.ipa file>
this will ask your Apple ID and App Specific password and will process the actual App based on your appid mentioned in your package.json.
You can change the app version and App name in info.plist inside App Resources->ios folder.
Thanks. I realized this was the answer after I posted the question. I'm new to NativeScript, but not to iOS development. It occurred to me that once the app is uploaded to App Store Connect, I still control the activities of either posting or setting up TestFlight. Thank you.

How to set Xcode Bot to run "on commit" for all branches of remote repository?

When creating an Xcode Bot in Xcode 6, it is linked to the current active branch in Xcode source control. There seems to be no supported way to change branches after creating the bot.
Xcode Service: Select Git Branch
I have set my bot to run "on commit". I find when I commit to that branch the bot immediately integrates the project. But when I commit to a different branch, the bot takes no action.
Ideally I would like a single Xcode Bot to look at all branches of the remote repository. When there is a new commit to any branch the bot and its tests should be run.
I do not want to create a new bot for each branch. Is there a solution?
Bug Report:
rdar://20154198
Developer Forum:
https://devforums.apple.com/thread/263490
There is also https://github.com/modcloth-labs/XBotBuilder developed by the same creators of the tool #jeremy-fox. It will create a bot per Pull Request, and re-run the bot for every addition in the PR.
It seems to be in early stages and without documentation but the code seems to be well organized so wouldn't be hard to get it to work or change it's behavior to do what you want.
For the moment we use a tool called Buildasaur (https://github.com/czechboy0/Buildasaur) to improve our CI-workflow. It's written in swift and helps to build/run/ delete bots automatically for one github repository, for example whenever a pullrequest was created or newer commits were pushed to the pullrequest. Actually it works fine on our Xcode Server 6.3. Unfortunately it works for just one repository at the same time. :-(
We also hope, that Apple will implement such features soon.
Apple response from the dev forum:
This isn't something Xcode Server supports. You might be able to craft a pre-integration trigger to switch branches in the working copy and invoke seperate xcodebuild invocations, but the results reported in the UI will only be for the Xcode Server builds (the build that XCS runs after your trigger executes).
https://devforums.apple.com/thread/263490
rdar://20154198
This is not currently possible with Xcode Bots (current versions are Xcode Server 4.0.3 & Xcode 6.2). A Bot will only track the specific branch form which it was created.
This was possible in the past on Xcode Server 3 and Xcode 5 using https://github.com/modcloth-labs/github-xcode-bot-builder but this project hasn't been updated to work with the latest version of Xcode Server and Xcode.
I'm also really hoping Apple introduces this feature soon, it would be great to be able to have a single bot monitoring a repo for new Pull Requests and when found run an integration against that PR. For now though, it's just not possible.
Update 3/19/2015:
As #Gus reports in another answer, there is a new Mac OS X based project that can help with ad hoc bot creation for feature branches/PR's called XBotBuilder - https://github.com/modcloth-labs/XBotBuilder. It should be worth noting that currently, this project only works with one github repo. So, if you have more than one repo you'd like to monitor for PR's, this is still not currently possible unless you have multiple machines each running a different instance of XBotBuilder and targeting a different repo.

Equivalent to Website Publish for Console/Winforms apps in VS?

I've got a website and a console application which work together.
The Website is published to any of ~10 different servers depending on the publish profile. For production, that's MSDeploy but for Dev/Test/UAT/etc... it's a simple UNC File path copy.
I'd like to be able to publish the CLI as easily (at least to "local" servers). What I want is to click Publish, pick the Profile/Server and have it compile and copy the output in the bin folder to \\Server\ApplicationName
I'm aware I could perform the Copy as a Post-Build step but don't always want to do the copy and definitely don't always want it to the same place.
The publish options which exist for Console/WinForms apps seem to center around 1-click publishing which isn't what I'm after (I don't want the app phoning home looking for new versions every time, I want to explicitly push a specific version to a specific server).
I'm aware that if the app is running during the attempted publish, there will be problems.
Is this achievable?

Resources