Software for Android


 

On Sat, Dec 28, 2024 at 1:56 PM Jerry Stuckle via groups.io <ai0k=
ai0k.net@groups.io> wrote:

Peter,

It looks like you have an older version of the kernel, which could
explain why you can download it and I can't.
Nope, it's not the kernel version, it's the version of the Android API that
the application was built under.
Newer API versions don't support very old versions of Android.

https://apilevels.com/ and
https://support.google.com/googleplay/android-developer/answer/11926878

If you don't see it in the Play Store, then the second link provides the
rationale.
73,
-Rick

--
Rick Murphy, D. Sc., CISSP-ISSAP, K1MU/4, Annandale VA USA


 

Rick,

That's true to a certain point. However, the API is just an interface to the kernel and must be compatible with the kernel. Changes in the kernel often require changes in the API. Perhaps not in the interface but in the implementation.

And I can find the app in the Play Store but an attempt to download it results in the message that the app is not compatible with my Android version.

73,
Jerry, AI0K


 

Not really . . . apps need to be compatible with the runtime libraries (try to run something too new on a Linux based system, and the errors you getvare almost always symbol errors from libc, not including the newer ones. Running older code rarely fails . . . ) - almost nothing accesses the kernel directly on any Linux based system (and those interfaces are standards driven, and rarely change - mainly things presented as devices.

For instance (no Android, but the Linux foundation is similar), I can boot my systems ino a 3.x, 4.x, 5.x and 6.x family kernel, and absolutely nohing breaks app-wise - libc never changes.

- Tim

On December 29, 2024 12:52:41 PM CST, Jerry Stuckle <ai0k@...> wrote:
Rick,

That's true to a certain point. However, the API is just an interface to the kernel and must be compatible with the kernel. Changes in the kernel often require changes in the API. Perhaps not in the interface but in the implementation.

And I can find the app in the Play Store but an attempt to download it results in the message that the app is not compatible with my Android version.

73,
Jerry, AI0K




--
Sent from my Android device with K-9 Mail. Please excuse my brevity.


 

Tim,

I've worked on multiple APIs in the 50+ years I've been programming (including as an IBM employee) on everything from MS-DOS 1.0 to mainframe operating systems like MVS.

Yes, few applications interface directly with the kernel. But the API consists of two parts - the interface and the implementation.

The interface is what the applications see. The implementation is how it interacts with the kernel and other resources. A change in the kernel can definitely change the implementation (which is why you have version-specific libraries).

But sometimes the changes in the kernel can't be covered by the implementation without changes to the interface. And yes, it does happen which is why application sometimes have version specific libraries.

So you can't say that changes in the kernel do not affect applications. They definitely can. That may or may not be the problem here but not knowing the reason for the rejection the biggest thing I see between being able to download or not is the kernel version.

Jerry, AI0K


 

I said that they are a layer away - apps go through the system shared libraries to access kernel functions in most cases, so reallynare well isolated. 36 years in *nix as a professional, including System-V at the source level, taught by AT&T, (If Win*/MS does something tupid, I'm not at all surpised . . . ). Essentiallynhave my own Linux distro, and can't recall a libc update forcing a kernel update (or the opposite) other than the change away from a.out binary format. I do load software from my own source builds wherever possible though, due to app symbol/lib version issues . . .).

On December 29, 2024 8:16:02 PM CST, Jerry Stuckle <ai0k@...> wrote:
Tim,

I've worked on multiple APIs in the 50+ years I've been programming (including as an IBM employee) on everything from MS-DOS 1.0 to mainframe operating systems like MVS.

Yes, few applications interface directly with the kernel. But the API consists of two parts - the interface and the implementation.

The interface is what the applications see. The implementation is how it interacts with the kernel and other resources. A change in the kernel can definitely change the implementation (which is why you have version-specific libraries).

But sometimes the changes in the kernel can't be covered by the implementation without changes to the interface. And yes, it does happen which is why application sometimes have version specific libraries.

So you can't say that changes in the kernel do not affect applications. They definitely can. That may or may not be the problem here but not knowing the reason for the rejection the biggest thing I see between being able to download or not is the kernel version.

Jerry, AI0K




--
Sent from my Android device with K-9 Mail. Please excuse my brevity.


 

Well, first of all, Linux is only one OS out there, so it is not really a great reference. There are many other OS's out there, several of which I've worked on, from embedded systems to mainframes.

But I never said an update to libc forced a kernel update. In fact, just the opposite. The kernel is the lowest level and everything must interface to it. And while developers do their best to maintain compatibility, it's not always possible. This is why sometimes an application requires a certain library version.

If what you are saying is true, why is it I (at the latest kernel level) can't install it but other can?

73,
Jerry, AI0K


 

Jerry,
You're stuck on this point but it's simply not true. It's not the kernel.

The issue here is the API level used to build the app. That's it. It's the
API level. When the Play Store says that an app is not compatible with the
version of Android on your phone, it's the API version shipped with that
version of Android and how far back it supports, as well as the minimum API
version the application was built to require Nothing more, nothing less.
Has zero to do with the kernel. The play store has no idea what kernel your
phone is running.

I posted the page with the proof (compatibility levels for each Android
release). For the record, I've been an android developer, kernel hacker,
and reverse engineer for over ten years. XKCD "Recognized Developer" for my
contributions to the rooting community.

The same thing is true for Apple applications. I build TQSL software for
MacOS, with OSX 10.10 as the minimum allowed API version. If you're running
anything 10.10 or later, it'll work fine - which means several different
kernel versions from 10.10 to 15.2 - but if you try to use 10.9 it'll fail
as the userland libraries don't have the API interfaces that the
application needs. 10.10 came out in 2014, so Apple has maintained
kernel compatibility for 10 years.)
As Tim said, the kernel changes but remains largely backward compatible.
The userland libraries do not.

And finally, Windows - same issue, but much more tedious due to DLL Hell.
The same application works from Windows XP to Windows 11 without changes
(That's what, 23 years of kernel updates and no compatibility issues.) .The
kernel doesn't matter.

-Rick

On Mon, Dec 30, 2024 at 7:21 PM Jerry Stuckle via groups.io <ai0k=
ai0k.net@groups.io> wrote:

Well, first of all, Linux is only one OS out there, so it is not really
a great reference. There are many other OS's out there, several of
which I've worked on, from embedded systems to mainframes.

But I never said an update to libc forced a kernel update. In fact,
just the opposite. The kernel is the lowest level and everything must
interface to it. And while developers do their best to maintain
compatibility, it's not always possible. This is why sometimes an
application requires a certain library version.

If what you are saying is true, why is it I (at the latest kernel level)
can't install it but other can?

73,
Jerry, AI0K





--
Rick Murphy, D. Sc., CISSP-ISSAP, K1MU/4, Annandale VA USA


 

No mention has been made on a lot of the installs as to if they installed via the store, or an apk.

The store looks at device type (tablet, phone, etc.), Android version, and perhaps other things to determine if it should allow a download, and I beliece that stuff is set by the software owner/publisher, not determined by the app directly.

As a counter argument, if the kernel were the factor, kernel upgrades as part of Android patching would cause already loaded apps to no longer work, and I have never see that happen (or a bunch of patches immediately after an Android patch).

And I speak to Linux (or *nix in gereral) since it's what Android is rooted, and it's because it's where my professional experience lies (Ultrix, AIX, SunOS, Solaris, Ultrix, Irix, whatever Convergent called thiers, SysV68K SysV88K (Motorola) and a few others . . .

On December 30, 2024 7:20:57 PM EST, Jerry Stuckle <ai0k@...> wrote:
Well, first of all, Linux is only one OS out there, so it is not really a great reference. There are many other OS's out there, several of which I've worked on, from embedded systems to mainframes.

But I never said an update to libc forced a kernel update. In fact, just the opposite. The kernel is the lowest level and everything must interface to it. And while developers do their best to maintain compatibility, it's not always possible. This is why sometimes an application requires a certain library version.

If what you are saying is true, why is it I (at the latest kernel level) can't install it but other can?

73,
Jerry, AI0K




--
Sent from my Android device with K-9 Mail. Please excuse my brevity.