About the Potential Android P App Ban
Late last year, Google mentioned that:
Future Android versions will also restrict apps that don’t target a recent API level and adversely impact performance or security.
Friday, Android Police pointed out
something that I had missed: apps with a targetSdkVersion
below 17
will get a warning dialog when they are first run on an Android P device.
Plus, the documentation for that minimal-accepted targetSdkVersion
mentions:
Applications targeting lower values will fail to install and run.
Let’s assume that the JavaDocs are correct, and so the “restrict” from my first
quote above really means “ban”. So, for the developer previews, we just get
the warning dialog, but that the final version of Android P will block such
apps from being installed or run. This is on top of the Play Store’s already-scheduled
ban on new apps and updated apps that use older targetSdkVersion
values.
Let’s talk about the ramifications of this, in the form of winners and losers.
Winner: Active Developers
Clearly, Google is trying to winnow out older apps, and that benefits developers who are continually investing in their apps. For developers focused on publicly-distributed apps in the Play Store, the primary driver for this will be the Play Store ban, more so than the Android P ban. But, there are other ways of distributing apps, and those channels may be limited more by an Android P ban.
Loser: Small Organizations
Historically, the vast majority of money for software purchases was not spent on packaged software, but instead were for custom-developed pieces of software, usually in support of some organization: a business, a government, a non-profit, etc. Some of that custom development is now devoted to mobile, and those apps are privately distributed by one means or another.
While many organizations are used to software obsolescence, they expect that to be on fairly large time frames. I distinctly remember helping a firm in the early 2000’s keep a 16-year-old MS-DOS program running on Windows XP, for example. The idea that a piece of software developed five years ago might stop running because Google decided that it should stop running is not going to go over very well.
Larger organizations frequently are better equipped to try to do periodic maintenance on apps to avoid such bans. Smaller organizations may lack the budget to keep tinkering with an app just to make Google happy.
Winner: Web Developers
The solution is a fairly simple formula:
-
If you are willing to invest annually in an app, feel free to make Android apps
-
Otherwise, write a Web app
Web apps have their issues, to be certain. However, you are less dependent upon Google infrastructure and Google decisions. For example, even if Google decides that Chrome will no longer display Web pages written over five years ago, there are other Web browsers.
Loser: Users
Probably I have fewer apps on my personal Android device than you do.
But some of the apps that I use might not run on Android P, such as the app that I can use to track my blood pressure and the app that I use for its NYC subway map. Are there alternatives? Sure. But I happen to be aware of this impending change and might be able to migrate to some other app.
What happens to users if they get an upgrade to Android P, which then refuses to run some of their installed apps?
If the ban is only imposed on newly-installed apps… what does that say about the stated rationale for the ban (“adversely affect performance or security”)? Do existing installed apps somehow not adversely affect performance or security, where a fresh install of the same app would?
Winner: App Repackagers
I expect a cottage industry to arise where people will skills in decompiling
and recompiling Android apps start distributing versions of apps that have
their targetSdkVersion
raised to a level that avoids these bans. Whether those
repackaged apps will work — and whether they contain malware —
remains to be seen. But, some people will want some of these older apps and will
be willing to turn to unconventional sources to get them.
Winner: Regulators
For anyone worried about Google’s power, these bans become yet another lever to pull to try to convince regulatory bodies that Google’s behavior should be curtailed. There will be a variety of aggrieved parties who can point out how their organizations were harmed by these bans.
Loser: Google
These bans play right into the issues that Steve Yegge outlined last week. Google deciding to drop support for certain Android apps adds a risk factor to developing Android apps in the first place. Avoiding these or future bans requires either abandoning native development or ensuring that continuous native app maintenance is super cheap. “Super cheap” is unlikely to be traditional Java-based development, or even Kotlin-based development.
That, plus the regulation concerns, means that it is unclear how Google comes out ahead from this. Yes, they will be able to retire some amount of legacy logic. Is it worth it?
Alternative Scenarios
Perhaps all Android will do, at least for Android P, is show the “this app is damn old” dialog, but will still allow the app to run — the behavior that we see today in the developer preview. There is still risk to Android app development that Google is introducing, but it will have less immediate impact, since everything will still run as it had before.
Perhaps Android P will show that dialog, then treat the app as having a targetSdkVersion
of 17, even if the manifest declares something lower. This would allow the app
to try to run while stopping it from “adversely affect[ing] performance or security”.
Some apps might fare just fine. Others might fail spectacularly. But even if less
than 100% of the apps work, that is better than 0% of the apps working because Android P
refuses to run them.
Perhaps this is a “trial balloon” and Google will revert all of this before Android P ships in final form.
This fall, we will know for certain what the shipping Android P will do and how it compares to what we see today.
And if you’re reading this blog, probably you are an active developer, and
probably you are keeping your targetSdkVersion
close to current, and so
probably neither of these bans will affect you directly. Unless you use Android
apps, in which case, you may have problems.
Which reminds me… perhaps I should hold off checking my blood pressure for a bit…