It's really copied from Apple's anti-consumer measures, which seem to be targeting free software. (Not just free as in speech, but also free as in beer.)
A developer might not care whether or not a fun project earns them anything, but Apple and Google want their cut, so if they make distributing software through their store expensive and time consuming, the free stuff will fall by the wayside, so the only options for a simple tool are either ad-laden or have recurring expenses.
Also, I used to think that getting an FPGA IDE up and running was the most painful, unreliable, and bloated development environment possible, then I met Android Studio.
This fully reflects my own Android experience (https://play.google.com/store/apps/developer?id=Paul+Lutus) -- writing Android apps is by no means a write-and-forget experience. As time goes by more of my apps are dropped from the platform from my unwillingness to drop everything and rewrite code for each new Android version.
My original intent was to put my free, open-source apps on the platform, much as I had done before Android existed. But no -- Android doesn't work that way.
My best-known Android app is SSHelper (https://arachnoid.com/android/SSHelper/), a Secure Shell server meant for file transfers. Still works perfectly, dropped some time ago.
TankCalc (https://arachnoid.com/android/TankCalcAndroid/), same story. It's a well-known multi-platform app tank farm managers use to profile storage tanks. Still works, dropped from the platform.
And not just mine. Many other free, first-rate Android apps -- Termux (https://termux.dev/) comes to mind -- have been driven off the platform by Google's onerous demands and commercial focus.
It's as though a wall is going up between people who like programming and people who like money.
I've given up on my hobby apps. The coding side is easy; the bureaucracy of the app store makes in completely not worth it unless you're a company.
> Displaying notifications didn’t require permissions, now after API 33, it requires POST_NOTIFICATIONS
Good. Really tired of installing an app, forgetting about it, and then getting a bs notification a couple of days later to get me to open it again.
The title submitted here is “Maintaining an Android app in Google Play Store is a lot of work”. I expected it to be focusing on Google policies around Play Store that make life hard, but really the only part that even touches that is the incidental “your app will get delisted if the minSdkVersion is too old” at the end.
The actual article title omits “in Google Play Store”, and it would be good for that change to be made here too.
Agreed with the article. Some will say just do iOS/Cordova/React Native/Flutter. But these have all the same problems eventually.
Do web? You're just pushing the problem of accessing lower levels (esp. files and camera) to the browser. Browsers are not consistent. Some devices don't even update their browsers and it would break POST on a very specific version of Android.
There's a high end Samsung gallery that has a very inefficient way of displaying thumbnails. This is the default gallery. If the user has over 10000 photos or so, it freezes. People who buy this phone will often have a lot of photos. And they're rich; usually the investor. This bug doesn't show up in typical tests because QA can't afford this phone. So the fix is to avoid built in galleries, and write a custom gallery for the app that utilizes binary search or something. Major apps like FB and WhatsApp will have implemented their own in built gallery software so these device owners end up blaming the apps that don't.
We treat our apps like they're finished paintings to be hung on a wall, but Google and Apple treat them like tamagotchis we have to keep alive.
This is the exact reason why my app is not available on the play store anymore, combined with the fact that google wants to publish my address even though I'm NOT a trader in the EU
This is one area I will give Apple credit for. While their app store is a pain to navigate, their framework support and dev patterns have stayed pretty consistent since the early days of iOS. My companies iOS app today looks very similar to how it looked 9 years ago when we started it, aside from changing from objc to swift, it's still driven by core data, view controllers and storyboard views. Our android app on the other hand is kind of a Frankenstein app that started with Activities, Java, Sqlbrite, Butterknife, manual state management and Dagger, and has mostly transitioned to Fragments, Kotlin, Room, Data Binding, ViewModels and no Dagger. It's still quite a mess that we'll never have the budget to fix up properly.
>Toasts use to work for quick notifications, now, after API 31, it only works if the app is foreground. How to know if you app in foreground? You have to use ActivityLifecycleCallbacks for that and write ton of code and even then there are confusions about onStart vs onResume. Of course this can race with the check in the OS so I question if this is even a good idea in the first place.
The check in the OS just checks if your app currently has a resumed activity. It doesn't require a ton of code. All activities receive a callback when they become resumed, onResume, and a callback when they are paused onPause. Yes you can use ActivityLifecycleCallbacks to have callbacks for all activities of your app in one place to track the state for each activity one place if you are not firing the toast from a specific Activity.
The onStart callback is not relevant here. And the article that was linked improperly assumes that an app only has one Activity going through lifecycle events at once which is not true. The article is trying to solve a different problem, a problem that probably shouldn't need to be solved. It's trying to avoid callbacks when an app gets recreated when the device rotates, but nowhere else in the OS avoids such a thing. During rotations the OS freezes the display to hide the fact that your app is closing and reopening. It's going to be hacky to trying and pretend to stay open during such an event.
It is indeed a lot of work. All of my apps are only available on F-Droid now, after years of playing ball with Google Play. I wrote about my experience here:
That's nothing compared to the random lifetime bans if you step on some "high risk behaviour" triggers while publishing apps. With no recourse
And then that absolutely retarted 12-testers rule
Reminds me of https://www.joelonsoftware.com/2002/01/06/fire-and-motion/ - I wonder if that's deliberate on the part of Google.
Yeah I gave up on Android apps after Google broke mine so many times.
Just make a web app, works everywhere
off anything devices and pc
> Upgrades for the sake of it
> Material 2 was deprecated for Material 3. No clear migration guide was provided. I tried to upgrade
Why would you do that? This is a self-inflicted wound that exactly matches the title. This isn't like another example of some important system library you need that gets removed, forcing changes
> Crucial third-party libraries have been deprecated
Since you've used them at this state for the whole of app's existence, you can continue to do so without any extra maintenance?
I mean, if you view any non-breaking changes as breaking, especially when it comes to UI, the amount of maintenance is infinite anywhere.
off vr see
There's not 2 different versioning schemes, there's 3! Those clowns sometime use letters. Now you have to recite your alphabet just to know if one version is before or after.
[flagged]
And all this article is "just" about the building of the Java/Kotlin application :)
Native NDK is another can of worms, with updates linked to SDK or sometimes not, unclear documentation about device and API compatibilities, compiler behavior changes and other requirements (like the 16K one) that impact so many 3rd party native libraries.
But, of course, the rules on the uploading and the changes of the Console, that changes so often is what makes it painful.
The absolute nightmare is about giving Google the root signing key of your application, the unfinished business about app bundles (which should reduce the size of the downloaded app, and more often than not, make it bigger), the changes in compliance, letters to sign for different countries, the compatibility for Google form factors (XR, TV, Auto, Automotive), Inline installs and other Teacher Progams, Play for family and so on.
All of this changes non-stop and is very poorly documented :)
At least, the Play Store is still GPLv2 compatible, so for now, we're saved (VLC)