Readit News logoReadit News
l72 · 2 years ago
I also got this email, but professionally and personally.

Personally, I voluntarily built and run open source apps for 16 different cities for their transit system. This gave me two weeks to update 16 apps, for no benefit of anyone. My app is a PWA, and the Android version just uses cordova + a few plugins to add a few native options. Unfortunately, updating cordova to support the new target android api broke some of the plugins, which haven't been updated yet, so it ended up being a full weekend of work and testing.

Truthfully, I'd prefer to get rid of the app and just have users go to the website and install the PWA, but the average user still doesn't know how to do this. And the Play Store is still the first place users go to find apps. If google would just allow submitting a PWA directly to the app store, that'd be nice... I am not looking forward to doing this yearly.

Professionally, we are also scrambling. We have a legacy app that some supported customers are still using until the end of the year. The app is a fairly complex application, and basic testing has already shown that just changing the target api version has broken quite a few things. We have gotten the extension, but we know this will take 1-2 weeks of developer time + 1-2 weeks of QA's time, for an update that does nothing but appease Google. All for an app we are going to officially remove from the store at the end of the year, once all customers transition to the new app is complete.

themacguffinman · 2 years ago
> Truthfully, I'd prefer to get rid of the app and just have users go to the website and install the PWA, but the average user still doesn't know how to do this. And the Play Store is still the first place users go to find apps. If google would just allow submitting a PWA directly to the app store, that'd be nice... I am not looking forward to doing this yearly.

This is what Trusted Web Activities (TWA) are for, you can use it to list PWAs in the Play Store without frameworks like Cordova

https://rangle.io/blog/publishing-a-web-app-to-the-play-stor...

https://developers.google.com/codelabs/pwa-in-play#0

modeless · 2 years ago
My TWA app still got hit with this mandatory update requirement. I'll have to rebuild the wrapper app for the first time in years. I don't even remember how I did it last time but I do remember that Android makes it nowhere near as trivial as it ought to be. I can practically guarantee that something will break if I try to do all this busywork. I'm probably not going to bother, it's just a free app that I made as a side project and a large majority of users visit the website in a browser.

If Google actually cared about getting PWAs into the store, the process would be as simple as submitting the URL of your PWA manifest to the Play Console.

BaseballPhysics · 2 years ago
> Truthfully, I'd prefer to get rid of the app and just have users go to the website and install the PWA, but the average user still doesn't know how to do this.

Let's be clear: that's not because users don't know how to do it. It's because Google and Apple haven't made it as easy as installing an app from their app store. That's a choice, and it's a deliberate one.

hn_throwaway_99 · 2 years ago
I disagree, at least on the Android side of things (Apple has long been hostile to PWAs). Installing a PWA from a website is trivially easy on Android, it's just that most users really have separated in their minds (not surprising due to history) that apps come from app stores, and the browser is used for websites.

Also, Google has made in much easier in recent years to submit plain PWAs to the Play Store: https://youtu.be/ddbHp8tGBwQ

scarface_74 · 2 years ago
You mean - click on the share button and “copy to Home Screen”? It’s literally been an option since iOS 1.
zodester · 2 years ago
On iOS PWA installation is hidden under the share sheet but is easier in terms of accounts as you don't need an Apple ID signed into the App Store.
kergonath · 2 years ago
I find it much easier to install a web app from the website than having to find anything on the App Store. There’s nothing easier, it’s only 2 taps when browsing the website, at least on Safari. The process is exactly the same as in iPhoneOS 1.0, when this was the only official way to get applications.

The problem is not that it’s difficult, it’s that the share sheet got bloated and should be completely rethought.

TexanFeller · 2 years ago
> I'd prefer to get rid of the app and just have users go to the website and install the PWA, but the average user still doesn't know how to do this

I think you misunderstood users, it's not just ignorance. I want apps to go back in the direction of real(not cordova) apps, not some low effort web thing. Basically zero web apps match the experience of a well crafted actual app.

l72 · 2 years ago
I agree with you in many cases. At my professional company, we've made the decision to write native apps for Android, iOS, Windows, and the web, because we have pretty deep integration into each platform and want the best native experience for our users.

But, for my personal apps (which is what I am talking about in this thread), I can't support that. Writing it once and maintaining it takes up enough of my free time. This app also doesn't have any integration with the system, and has a minimal interface, so it works quite well as a web app.

fauigerzigerk · 2 years ago
We love to discuss technology on here and I have my own opinions about that, but to be honest, as a user I have found absolutely no correlation between the underlying technologies and how well an app works for me.

It often hinges on seemingly small design decisions that make some frequent task either a breeze or a constant annoyance. There aren't many cases where making the right design decision depends on whether or not the code is "native".

I believe the most important distinction is whether the motivation for making an app is economically aligned with my motivation for using it and sustainably so.

It's not primarily a technology issue.

BaseballPhysics · 2 years ago
I used to think that, and then I started using Phanpy and Voyager. PWAs can be surprisingly good if they're done well. The problem is the mobile platforms have done nothing to optimize the experience or encourage their development and so the good examples are few and far between.
curt15 · 2 years ago
>I think you misunderstood users, it's not just ignorance. I want apps to go back in the direction of real(not cordova) apps, not some low effort web thing. Basically zero web apps match the experience of a well crafted actual app.

For me, it also depends on how integral internet access is to the application's function. When I'm on my computer and want to check the weather, I don't want to launch a separate application. I just google "weather". I agree that games probably belong as standalone desktop/mobile applications and similarly for other programs requiring deep integration with OS APIs. But if an app mostly wraps content that's already available via a website (e.g. starbucks.com, subway.com, or news sites), I'd rather just use a full-blooded web browser.

olalonde · 2 years ago
Would you prefer having no app at all or a Cordova/PWA app? Because those are often the only realistic options for one-man/small teams.

Deleted Comment

carstenhag · 2 years ago
I have compassion with you, some of my private apps were also affected.

But we were being told this deadline for many months now. It was clear that at some point they would show it more in your face. I also disliked the way it was formulated, also, even if everything was fine in production, it complained when testing versions didn't comply (doesn't make sense).

Also, it was always only about pushing new updates (it's ever year like that). You could still keep the app live for some time.

Saying you only had two weeks is not correct.

l72 · 2 years ago
My understanding from earlier notifications was that updates would not be accepted unless you targeted a new api version. That is fine, since I haven't updated the Google Play "app" since I first released it. This is because the real app is a PWA that I update through the web, and the Play Store app is just a shell around that.

The first time I was aware that the app would be delisted in the Play Store for new devices was in the August 18th email.

foobarbazetc · 2 years ago
They only sent the “you’re being delisted if you don’t do this” email like a week ago.
withinboredom · 2 years ago
This email was the first I'd ever heard of it.
lutarezj · 2 years ago
Not sure if it helps, but if I was in your situation I’d provide a few app updates with a screen to train users on how to install the PWA version and gracefully run away from these problems. Maybe also provide a some sort of a form to get some feedback over the difficulties encountered by users to get there. Good luck!
l72 · 2 years ago
The problem is that many of my users are temporary. For example, I have an app for the public transit system for a resort town in Colorado. The town has a decent, albeit small bus system. They technically have an app from their vendor, although it is not very good and is difficult to find. If you search for "$town_name transit app", it won't show up anywhere, where as my app does. And I think my app is much more user friendly. I wrote it because I visit this area a lot and hated the vendor app.

My users are visiting this town for a few days, and are most likely going to open the app/play store and search for an app, use it for a few days, then leave the town and forget about it. The least amount of friction I can provide the better. My only goal is to support public transit and make it a smoother experience.

es7 · 2 years ago
I love cordova for my personal apps, but once every year or two when I’m forced to update Android and iOS they become such a nightmare. I spend days or weeks getting unblocked because I don’t have unlimited time to maintain these apps alongside everything else in my life.
izacus · 2 years ago
The amount of time you have won't change how many security issues you ship with your browser wrapper though.
mvdtnz · 2 years ago
Your customers have been using websites for much longer than they have been using apps. I simply don't buy that they can't understand how to use a website. Stop underestimating your users.
zaat · 2 years ago
It's amusing that you are certain that you know his customers better than he does. I believe that you are utterly wrong, and if not most than certainly many people who use public transport and smartphones have never or nearly never been using websites on their phones, many of them haven't been using websites on a computer two - this is very typical of the non-technical people, especially those who are members of the younger and the older generations.
WirelessGigabit · 2 years ago
It's a minefield. I was in Sedona, and wanted to check the real-time shuttle schedule.

DOWNLOAD THIS APP.

I'm like: I'm on this website? It's an API call. Make the API call from the friggin' website.

Edit: I'm an idiot. On the screenshot where they refer you to the application it actually shows a URL:

https://sedonashuttle.transloc.com/routes

Enjoy.

scarface_74 · 2 years ago
If his customers are under 25 or 25 probably not. There are also plenty of older people in the US who never had a computer. But they now have smart phones.
WeylandYutani · 2 years ago
That's just ridiculous. Apps made smartphones big.
binkHN · 2 years ago
While I concur with the author on the challenges of Android development, the author made two major mistakes.

One, he didn't test his app on the latest version of Android. This a very major mistake and the reason why we keep 11 virtual machines around with all the versions of Android that our app is supported on. Two, when you release an app on Google Play, you never, never, never deploy the app to 100% of your user base, at least not initially. Staged rollouts are the norm and we never initially deploy an app to more than 10% of the user base after a release is published. Additionally, when we finally feel confident with a release, we deploy the app to 99% of our user base and not 100%. The reason for this is, if we need to halt a roll out for whatever reason, we are easily able to do so, so long as the release is not deployed to 100%.

For better or worse, both of these tactics are well-known by more experienced Android developers.

jarm0 · 2 years ago
I agree that things could have been done better in many ways. However, as explained, it is a legacy application, which does not see any active development nowadays and it would just not make sense to build such a robust QA. This particular app have been written long time ago by another company and there's not even simple unit tests. That's the hard truth. But still, even as complex setup as you have, there's still going to happen mistakes and the real problem is that there is no way to pull-back/cancel/rollback release.

How would staged roll-out help in this situation for all customers? When end-user gets the faulty version of the app, does he/she have a way of getting the non-faulty version somehow?

binkHN · 2 years ago
Unfortunately, as you noted, the game is rigged and you have to play within the sandbox provided. With that, and as you also noted, your testing simply needs to be better, especially since this is a customer-facing app and not an app that's solely used internally. As for dealing with the rollout when a serious bug is now in production, if you didn't roll out your app to 100% of the user base you could halt the roll out so it wouldn't affect any more customers. Then, while far from ideal, you could ask affected customers to uninstall the app and then reinstall it, and the newly installed version would reflect the previous version of your app.
clumsysmurf · 2 years ago
Just to add, even if you do not change anything at all, you will spend many hours just getting the build environment up to snuff if it hasn't been touched in over a year. Gradle, the plugins (android, crashlytics, etc), the build.gradle DSL, dependencies ... its quick bit rot.
mnstngr · 2 years ago
Android as an OS does not support rollbacks. It can only upgrade apps in monotonically increasing `versionCode`s. The simple reason is that client side data may have been upgraded by a newer release to a format that is now incompatible with the old version. Sqlite databases follow the same policy.

This is well-known to anyone who has been doing Android development for a while.

scarface_74 · 2 years ago
> and it would just not make sense to build such a robust QA

Well since it broke, it kinda of would have made sense.

> This particular app have been written long time ago by another company and there's not even simple unit tests

He didn’t do a simple smoke test.

regularfry · 2 years ago
> it would just not make sense to build such a robust QA.

Well that's a lesson you won't need to learn twice, isn't it?

mavamaarten · 2 years ago
Protip: that field takes decimals too. We always go for 99.99999999% so no users get left out accidentally. But it allows you to cancel a rollout like you say
philipwhiuk · 2 years ago
That's hilariously crazy.
akira2501 · 2 years ago
> This a very major mistake and the reason why we keep 11 virtual machines around with all the versions of Android that our app is supported on.

Which is fine, if that's what you have to do, but at the end of the day I really do wonder what their 30% cut of your revenue is for, then.

gazby · 2 years ago
The section that's quoted here made me briefly wonder if GP was satire. As someone with no Android Dev experience: WTF Google?!
IshKebab · 2 years ago
This feels a little victim blaming. Those two things shouldn't be an issue at all.
lubesGordi · 2 years ago
What you're saying is totally true and the only pragmatic way to update/release. But it is a shame that if the api update compiles you can't expect things will just work the same way.
danpalmer · 2 years ago
This is why you set a version number for the API you want. No type system in wide production use is able to encode the semantics of APIs sufficiently. Many of the best APIs out there have version numbers that allow you to pin the API structure and semantics – GitHub and Stripe come to mind with this.
lawgimenez · 2 years ago
This is my same sentiment, author has been too dramatic with the blog title. Updating from 30 to 33 SDK is just a disaster waiting to happen. In the mobile world that is just too long.
jarm0 · 2 years ago
But this is also kind of a problem created by Google - why force from 30 to 33 and not force from 30 to 31, then 31 to 32 etc? Gradual API level upgrades would make more sense in my world and probably would be less risky for every party.
Ozzie_osman · 2 years ago
I don't get the comments tearing into OP. Sure, he could have been more careful. He could have tested the login on the latest version of Android. But what if it wasn't a login crash? What if it worked on the latest version but not others? At what point do you draw the line?

At some point, you just have to say "OK this is a platform used by literally millions of apps and millions of developers, and mistakes will be made, and it should be easy to fix them by stopping your own rollout (without having to know tricks like doing a staged release) or immediately making an older, already approved version live again". It's such a basic design principle to make things revertible/recoverable, especially for something like an app store.

jarm0 · 2 years ago
I'm the OP and thank you for thinking along with me here. As stated in numerous replies already then I totally agree that I could have done better in terms of testing things out - of course, there's always room for improvement in that regard. There was a deadline set by Google (again, first time I heard about it was at 18th of August, not before), change seemed trivial at time and since app worked on an old Android version as it was before then I didn't expect it to fail so miserably. Again, I'm not a seasoned Android dev, but have 15+ years of experience in software development in general so I have some expectations how things will work or not and what to expect and be afraid of. I really didn't know that "best practice" is to do a staged roll-out of "99.99999999%" to have a way of partial "yank" possibility of the latest release. To find out that there's no way to cancel/delete a latest release to fall back to previous working version was just something I did not expect in my wildest dreams (I guess this is something you only learn during situations like these). Yes, everyone can blame me for not testing every functionality with every Android version and I do the same, but please open your eyes and understand that the way releases are currently handled by Play Store is not a sane person would do outside of Play Store. Everyone will have a problem like this at one point and I do hope that this article will and thread in here will lower the number of developers experiencing situation similar to this.
scarface_74 · 2 years ago
> What if it worked on the latest version but not others? At what point do you draw the line?

This is a poor excuse. Even if it were a web app, you would still need to test on multiple browsers.

Doing a smoke test on a new release is just basic professionalism.

And having a phase roll out with a rollback is also not a new concept.

kobalsky · 2 years ago
but bugs slip testing all the time, that why even “the pros” have to use staged deployment trick, which takes us to the root problem: releasing on android is like running through a minefield.

there are a million “shoulds”. just because you know most of them or can afford to account for them on every release doesn’t excuse google for the maintenance nightmare that the android ecosystem is.

Ozzie_osman · 2 years ago
> And having a phase roll out with a rollback is also not a new concept.

Having a quick revert is also "not a new concept". Most modern devops practices focus not just on Mean Time to Failure, but Mean Time to Recovery, and a quick revert is a critical part of that. Even Google's own SRE best practices encourage that.

charcircuit · 2 years ago
>At what point do you draw the line?

It is inexcusable that for a task to port an app to Android 13 (targetSdkVersion 33) that the app is not tested with Android 13.

o1y32 · 2 years ago
> It's time to move back to open (web) standards and take control back into our own hands!

Wait till you discover that the web is also half controlled by the company that is causing your problem now (Google). And Apple who owns Safari, the only browser on iOS in the real sense, isn't really your friend either.

jarm0 · 2 years ago
Yeah, that's also true, but at least this kind of problems can be handled by a roll-back or whatnot. Situation we're currently are in does not allow to do anything while we know that bad build is in production and phones are updating to it automatically. That's the worst situation to be in.
giantg2 · 2 years ago
Sure, you own the servers so you can rollback. You don't own a user's device. If you want to rollback after a full rollout, all you do is build your new/rollback release from your previously working commit and update your version number.
Timshel · 2 years ago
And that hosting it might incur more maintenance work than just billing it.

I certainly prefer a website to a random app that just exist to better track you. But I read the article more as they half hassed the maintenance ...

jarm0 · 2 years ago
Typical "legacy application situation where no team is assigned to" here. At least I've never seen in my 15+ year career a legacy application, which has a very good maintenance/testing model in place. It will just not work because maintenance/testing needs also resources and updates, but if priorities are in different places then it's not possible. Of course as stated already multiple times - things could have handled in better ways, but this doesn't mean that Google should not allow to stop release at least. Anyway, lessons learned.
natch · 2 years ago
Apple is definitely not your friend if you refuse to get on board with prioritizing user privacy and security, just to put a reason behind it.
gumby · 2 years ago
This is a no-win situation.

MS expends an inordinate amount of effort on back compatibility, and much kudos to them. But it vastly increases their attack surface.

Likewise many of the worst things about the unfairly maligned C++ come from a hardcore position on back compatibility: as much as possible, old code, and even old C code, should continue to compile and work as expected, even to the point of linking old binaries to which you’ve lost the source code.

Most people don’t go to that effort and just invalidate old stuff in the name of maintenance, reliability, and security.

Whichever branch cut you take you’re going to cause a problem for somebody. If not, nobody is using your code.

jarm0 · 2 years ago
Yes, that's definitely one side of the problem and I'm not chasing too much backwards-compatibility. My biggest concern in this particular situation is that there is no way (with Android, at least) to pull-back/cancel/rollback release and everything is blocked behind Google's review process. Why isn't it just possible to "yank" problematic release and continue showing previous release as the latest version. That would solve most of the issues within context of this problem.
imchillyb · 2 years ago
Rollbacks allow malicious actors to /simply-easily/ circumvent device security and user preference. To allow rollbacks is to /significantly/ increase the attack surface of a device.
lubesGordi · 2 years ago
The middle ground that I think helps everyone is, change your api and break compilation. Let devs fix the compile errors and use the api correctly, etc. But don't change the behavior of existing functions with the same signatures. As an api provider, do your best to make compilation mean something.
izacus · 2 years ago
This is exactly how Android works. But because API changes bring privacy and security improvements, scummy software used old compilation targets to abuse backwards compatibility to avoid complying with privacy and security practices.

This is why Play slowly enforces apps to raise their compilation target and implement safer APIs. It's lagging for YEARS after API changes, so there's plenty of time to fix apps.

The OP just decided to be lazy and wait for last two weeks.

Groxx · 2 years ago
There is no best win option, but you can also publish your app separately - these are Play Store requirements, not Android requirements.

It's far from trivial in many cases, and it'll never get anywhere near as much use as the Play Store version... but it is nice to have an escape hatch.

SenAnder · 2 years ago
I got the impression the author was mainly complaining about Google's role as arbiter of what software users may run. The problems from deprecating APIs are just what brought the author's attention to how vulnerable we've become to Google's whims.
cogman10 · 2 years ago
I just don't buy this as an excuse for google.

The majority of applications deployed to android are targeting android's bytecode. They aren't natively compiled applications.

The reason C++ presents insurmountable security problems is it's low level nature and the fact that once you have a native binary, you're done.

But a bytecode for a language with memory safety? How would it be possible to not backport security fixes. The very nature of running such code is one where you are constantly recompiling the bytecode.

Just to paint how absurd this position is for google. The JVM can still, today, execute and use classes targeting Java 1.0 (released in 1996).

This isn't a security issue, this is a "google doesn't want to support the platform" issue.

I'm more amenable to google clamping down on artifacts containing natively compiled code. However, a blanked "Your app was built targeting an old version of android, we won't support that anymore" is just ridiculous. Seems like a way for google to prune old apps from the store more than anything else.

Especially since a policy like this is by it's nature one that shifts a large maintenance burden on android developers. After all, if you want the widest support for your application, you target the oldest version of android possible. Very few people target the latest version of android for fear it will lock out too many of their customers.

If google was serious about security and making the latest android tech widely accessible, then they'd work towards decoupling the android runtime from the operating system version. There's no reason ART and the Dalvik runtime couldn't be distributed via google play like the rest of the android ecosystem. Removing the silly "you need android 17 to do this... opps your hardware manufacture isn't updating their hardware drivers."

But then, that would cut into new device sales and we can't have that.

janvidar · 2 years ago
> This isn't a security issue, this is a "google doesn't want to support the platform" issue.

Well, it is a platform security issue - sometimes a privacy issue.

Google essentially is improving security over time by fixing broken APIs which are deprecated and removed over time.

There are plenty of security and privacy related changes where APIs have been fixed in backwards incompatible ways. Essentially, this has been solved by adding more permissions - where either Google Play, or the user needs to consent.

In order to not break backwards compatibility this has been enforced based on the "target API level", and in order to prevent malware from simply targeting old API levels, they enforce this in Google Play by forcing apps to target current API levels.

In most cases, the changes required are rather small, sometimes code changes, sometimes compliance/documentation changes - or a combination.

pjmlp · 2 years ago
> The JVM can still, today, execute and use classes targeting Java 1.0 (released in 1996

Only if you are lucky they don't depend on stuff that started being removed after Java 8, when deprecated for removal went into effect.

charcircuit · 2 years ago
>There's no reason ART and the Dalvik runtime couldn't be distributed via google play like the rest of the android ecosystem

This is already the case.

denton-scratch · 2 years ago
It was always obvious that Play Stores and their captive developer "communities" were a trap. Forced API upgrades are just one aspect of that.

There are certainly tasks that are best done by a phone or mobile app; usually, these are things that involve moving around, such as navigation, or depend on phone sensors, such as working out which way is "up". But nearly everything else can be done by a website.

I'd hate to be a one-man developer trying to maintain a cross-platform mobile app. I sympathise. But strictly from the sidelines; I long ago decided that I wasn't interested in playing games with proprietary platforms and gatekeepers.

moron4hire · 2 years ago
> There are certainly tasks that are best done by a phone or mobile app; usually, these are things that involve moving around, such as navigation, or depend on phone sensors, such as working out which way is "up". But nearly everything else can be done by a website.

Actually, both of those things can easily be done in a browser app.

About the only thing that can't be done easily on mobile right now is GPU compute shaders. But that will also fall when WebGPU merges from desktop browsers.

The only other thing I can think of is generic, system-wide file management. That probably won't ever be coming. Though the File System API does allow users to grant access to specific directories, I don't think the permission persists past a page reload.

donmcronald · 2 years ago
> It was always obvious that Play Stores and their captive developer "communities" were a trap. Forced API upgrades are just one aspect of that.

I was convinced the app stores would be a flop because I didn’t think there would be a critical mass of developers that were willing to give up the guarantee they could actually deploy their apps.

jowea · 2 years ago
The big problem with this logic is that devs have to go where the users are if they want their money, no matter what.
izacus · 2 years ago
Funny reading this on a site that regularly tears into Google for not adequately gatekeeping software on Android and advertises iPhones as better because they police more aggressively.
amf12 · 2 years ago
I see cognitive dissonance on this site every day. Android or rather Chrome supports web apps, and Android allows apps not from the play store, unlike Apple, and yet people complain about both sides.

They'd also complain if Android allowed a loophole to violate privacy by targeting old insecure apis.

SenAnder · 2 years ago
But you don't want to be ideological about user sovereignty over their own devices, do you? Be smart and pragmatic instead, and walk the path of least resistance into a cage.
Ozzie_osman · 2 years ago
This is actually ironic because one of Google's SRE principles is that "rollbacks are normal".

https://cloud.google.com/blog/products/gcp/reliable-releases...

"At Google, our philosophy is that “rollbacks are normal.” When an error is found or reasonably suspected in a new release, the releasing team rolls back first and investigates the problem second. A request for a rollback is not interpreted as an attack on the releasing team, or even the person who wrote the code containing the bug; rather, it is understood as The Right Thing To Do to make the system as reliable as possible for the user. No-one will ask “why did you roll back this change?” as long as the rollback changelist describes the problem that was seen."

david_allison · 2 years ago
As of last year, due to a mix of Google Play policies and Android updates, if you're distributing an app on the Play Store, the only way to rollback is an uninstall + wipe user data.

----

* You cannot downgrade to a lower `versionCode` & `versionCode` is defined by the developer

* Android 11 prohibits writing to 'permanent' storage of the phone, with the exception of media, or using the `DocumentFile` API, which treats a local folder as cloud storage. `DocumentFile` is unusable for many use cases

* A developer can set `hasFragileUserData`, which should ask a user if they want to wipe their data on uninstall. There are Google/Android bugs which mean this dialog may not be shown

* If an app is uninstalled and the user doesn't delete data, Android blocks a downgrade to a lower `versionCode`

* You can use a regular java.io.File if you request `MANAGE_EXTERNAL_STRORAGE`

* Google Play only grants `MANAGE_EXTERNAL_STRORAGE` in exceptional circumstances

michelb · 2 years ago
"rollbacks for me but not for thee"
dep_b · 2 years ago
I had the same thing happening to a bunch of apps based upon a framework I built. The newer API version had problems with existing dependencies, really a shit ton of work to get back to exactly the same place I was already.

I really respect Microsoft a lot more, where stuff from the 90's has less issues running on the latest Windows version that mobile apps I wrote four years ago on Android.

kramerger · 2 years ago
Unless the framework you used came from Google that is an unfair statement.

You don't blame Microsoft for Adobe Flash not working on Windows 11 store, do you?

dep_b · 2 years ago
If Google breaks the framework I built, I still blame Google.