The Nexus Player is the Android TV Nexus device from Google.
This device, made by Asus embeds 8GB memory, 1GB of ram, costs 99$ and features an Intel® SOC, the Atom Z3560 (codenamed Moorefield). That means it has got a 4-cores 64-bit Silvermont CPU clocked at 1.83 Ghz and a PowerVR Series 6 GPU (G6430) that supports OpenGL ES 3.1.
Let’s look at how you can port your app to this device and Android TV in general.
JavaCV is a wrapper of mainly OpenCV and ffmpeg libraries. While these libs are perfectly compatible with x86 flavor of Android, JavaCV doesn’t provide the build scripts nor it integrate the x86 binaries.
It doesn’t take much to compile the proper x86 versions of JavaCV packages, but if you’re in a hurry, here they are:
Galileo is an Arduino that runs on a (x86) Intel® Quark X1000 SOC.
While it’s fully compatible with Arduino Software Development Environment, it’s also capable of running a full Linux distribution.
Sept. 2014 update: GCC and other dev tools are now part of the official linux image you can download from Intel Developer Zone.
With the recent changes (release 0.7.3 around Dec 27), the new Android Build System starts to be really interesting also if you are using the NDK!
Now this is really easy to integrate native libraries in your package and generate APKs for different architectures while correctly handling version codes (for more information on why this may be important, please refer to my first article).
update 2014/11/1: changed output.abiFilter to output.getFilter(com.android.build.OutputFile.ABI) in order to work with gradle 0.14
update 2014/09/19: I’ve added information and modified my sample build.gradle to demonstrate the brand new APK Splits feature introduced by the latest android gradle plugin (0.13)
update 2: I’ve modified the sample build.gradle file to make it call ndk-build scripts by itself.
update 1: Here is a screencast on how to set up a project with NDK sources from Android Studio:
Alljoyn is a cross-platform library designed for peer-to-peer communication between various devices over different transports.
This library is open-source (Apache License) and initially created by Qualcomm Innovation Center. The project has joined the AllSeen Alliance two days ago and now it’s hosted here: https://allseenalliance.org/source-code
Even if the precompiled x86 version isn’t distributed from the official website, compiling it from the sources is perfectly supported.
Latest update: the maintainer of the lib accepted my patch, 0.7+ release packages now include x86 libs: aacdecoder releases
Porting is a big word here ! As often, adding x86 support to libaacdecoder was a matter of fixing Makefiles.
libaacdecoder supports AAC as well as MP3 decoding through the use of OpenCore decoders. It’s based on opencore-aacdec which compiles fine for x86.
The release package, as of 0.6.1, includes only binaries for ARMv5 and ARMv7. If you try to recompile it by yourself from the sources, you may even think that other architectures aren’t supported… but this is wrong!
Since this is my first blog post here, I owe you an introduction!
One of my goals here is to share my experience on improving the x86 compatibility of various libraries and game engines on Android. This is part of my job at Intel and I hope that sharing this will be useful for others… especially if you’re a developer googling around because of some cryptic toolchain or compiler errors
Let’s start by explaining what it generally involves to do this and why it matters in the first place. I swear my next blog posts will be more focused on the technical details.