this post was submitted on 07 Jul 2023
202 points (86.9% liked)
Asklemmy
43983 readers
1209 users here now
A loosely moderated place to ask open-ended questions
If your post meets the following criteria, it's welcome here!
- Open-ended question
- Not offensive: at this point, we do not have the bandwidth to moderate overtly political discussions. Assume best intent and be excellent to each other.
- Not regarding using or support for Lemmy: context, see the list of support communities and tools for finding communities below
- Not ad nauseam inducing: please make sure it is a question that would be new to most members
- An actual topic of discussion
Looking for support?
Looking for a community?
- Lemmyverse: community search
- sub.rehab: maps old subreddits to fediverse options, marks official as such
- [email protected]: a community for finding communities
~Icon~ ~by~ ~@Double_[email protected]~
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
For me as a developer by far the biggest restriction on Android is raw performance, it's just so much slower than iOS, even the high-end phones.
Next is the lack of proper updates, if you build an app for Android and you want to reach a decent audience you have to target an ancient version of Android since hardly anyone ever gets OS updates so you can't use any of the newest functionality.
Combined with this is the lack of widely supported APIs. We're doing a bunch of GPU compute, on iOS this is no problem: you can use Metal Compute and it's supported on iPhone 6S and later (which is practically every iPhone still in use). On Android there is nothing comparable. There is RenderScript which is deprecated and lacks a lot of functionality, it's also slow and you can never be sure it actually runs on the GPU (it can fall back to CPU on certain devices and you have zero control over this). Newer OpenGL ES versions support compute, but it's only available on a handful of devices, same goes for Vulkan. Even then, which features are supported differs per device and per GPU. Sometimes there are even different versions of the 'same' device (at least: same marketing name) with completely different internals and different GPUs (I'm looking at you Samsung).
Android is a fucking mess.
Yeah, if you're working on really high-performance apps, I can see why iOS would be easier. I'm guessing it's because the hardware that runs iOS is exclusive, so they can create simpler and more reliable APIs for that kind of thing. Android supports pretty much anything, so consistent APIs and performance is much more difficult.
But I'd posit that your development case is somewhat narrow. Tons of apps only rely on more basic APIs and base-system components--where computations are happening (CPU vs GPU) isn't even considered, and doesn't matter. There's still more variation in performance, but it's usually negligible.
I can certainly sympathize with your case, though.
There is the advantage that they control both the hardware and software, but it's also that the hardware is several years ahead of the competition. Especially CPU and GPU performance. Apple's SoC's are just crazy fast, and they do it while using very little power as well. It's really impressive.
I don't get the performance argument, even midrange phones are powerful enough to run most apps
You got that backwards. The the apps are made to be able to run on the phone, not the other way around. For example: the app I work on works reasonably well on Android but that’s mainly because we downgraded it compared to the iOS version. It runs at much lower resolution and frame rate on Android.
wait, you don't write universal apps?
you need to write apps for specific device needs?
that doesn't sound right
I thought you just need to write apps for armv8 and with a certain language like kotlin swift flutter or whatever
also which app are you talking about? Lemmy check
hehe Lemmy
You write apps to target the majority of devices on a specific platform, as you want your app to work for most people. Since the average Android phone is a piece of shit, your app can’t be too demanding. It’s not about the language or instruction set, it’s about how much work you try to get your app to do per frame.
Most of those things are deliberate restrictions on Apple's part, rather than technical ones (it is really shitty though).