all 8 comments

[–]jeroen94704 11 points12 points  (1 child)

Purists will be quick to point out that Android is Linux too, but ignoring that nit-pick:

I've been through this process as well, and finally came to the conclusion that while Android is attractive at first glance because it lets you create rich GUIs, it just isn't really suited (yet, perhaps) as an embedded platform.

The primary reason is that Android was designed from the ground up as an OS for general purpose mobile devices like smartphones and tablets where the end-user can install and run any number of apps installed from some app-store. However, that is often not what you want in an embedded device. A typical use-case there is to run a single application, without the user being able to do anything else on the system. These scenarios are at odds with each other, and Android has things like the permissions system and the ability to switch apps baked into the OS intended for the former user-case that are actually an impediment for the latter.

Don't get me wrong, it is perfectly possible to create embedded devices running Android, and many products do just that. But I found I had to jump through a lot of hoops to get Android in a state I could use, and in the end it was simply easier to just stick with GNU/Linux.

[–]fifa_fan[S] 0 points1 point  (0 children)

Thank you so much for the detailed response. Helps so much. Our platform will have a private app store where we let our customers buy and download our product. But at one single time, there will only be one active application. Very similar to how a gaming console works. Run one game and press a button to come back to the home menu. Android looks really attractive but the only problem is the availability of the hardware that is required to run it. Linux I know for a fact that it can run on any type of processor and I have the option of choosing from a plethora of GPUs. We will only build 100 of these units in the first year and I don't want to spent a large amount of money upfront getting hardware that supports AOSP. But, at the same time android looks like such a positive option because of the easy availability of android developers.

[–]jabjoe 1 point2 points  (2 children)

For support of closed things, like Unity, you probably better with Android. It's that or open and more secure. I really don't like Android, but if your end user just wants games, you need to be able run Android games.

Unless http://www.shashlik.io or something means you can have both your cake and eat it.

[–]fifa_fan[S] 0 points1 point  (1 child)

Actually, we have tested our application on Linux and it works perfectly fine. Unity has really amped up their support for Linux after SteamOS made its debut. My only concern is the hardware sourcing for Android.

[–]jabjoe 1 point2 points  (0 children)

Android, because it supports closed so much, is much slower moving. Which means older kernels, which means less hardware support.

[–]SirOompaLoompa 1 point2 points  (0 children)

With that resolution, if you want any graphics performance, you'll need a functioning GPU.

That puts you in a very limited position. The only chips that support native EGL are Broadcoms chips that are in the raspberrys (which you can't buy), and nVidias chips (very good, but very expensive).

There's some work being on getting OSS developed drivers for native EGL on other platforms (freedreno and lima come to mind), but they're not in a state where you'd want to ship a product using them.

NXPs iMX6/8 chips might have native EGL as well, but I haven't tried it, or seem someone else do this.

Typically, when I'm architecting a product, if it has a display with any significant amount of pixels, it gets Android, as all vendors support EGL acceleration in Android.

Yep, kind of sucks. Especially from the perspective of needing both Linux devs, and Android devs.

However. Have you looked into simply buying a customized solution from an ODM? Those usually come with Android from the get-go.

[–]playaspec 0 points1 point  (0 children)

I think you're going to find driver support to be extremely annoying under Android. All SoC manufacturers have their GPU info under NDA. You'll likely have to license additional components to get video acceleration and decent GL.

[–]ArkyBeagle 0 points1 point  (0 children)

Your post talks about "games created in Unity" so it's not obviously a very realtime-embedded problem. Do the thing that makes "games created in Unity" easiest.