I'm totally with you re: Android and Apple being walled-garden ecosystems with ever-changing rules. But, don't you feel like this is true of most software (that it's never "done")? In my experience, there aren't many categories of software that can be truly feature-complete unless they are fully decoupled from popular culture. Maybe GNU units or grep can be called "done", but most apps have to change with the world around them.
The problem is that "done" is a subjective term. Most of the software I use on a regular basis is "done" as far as I'm concerned. If it didn't meet my needs, I wouldn't be using it on a regular basis.
This ignores security issues, of course, but most of the software I use on the regular doesn't have a networking component, so that's not as much of an issue.
* distribute on Testflight and never actually do a real release
* make an HTML app that works well on mobile, and can be cached for offline
Gradually I think I'm coming to prefer doing the HTML version
You don't need adb to sideload applications. If you enable sideloading, you can copy it onto the phone and run it that way.
I'm writing a book (https://opinionatedlaunch.com) over the course of 3+ years and I have to keep updating the "Mobile" chapters. Not because of some fancy new framework, but because both Apple and Google keep adding "requirements."
Sure, they're for the better (e.g. more strict access to phone GPS, etc) but if you don't keep up, eventually you'll find your apps removed by the platform at some point in time. In this sense, there's no "done".
You probably can still distribute that little program you wrote in 1990 in Pascal. I don't know the equivalent for mobile apps. (Distribute, not run. You can run it easily on your old phones).