kronflux wrote:
The kernel is what contains the device drivers. There IS a modern kernel for the Pi, which would work great with android with a few tweaks.
https://github.com/raspberrypi/linux
.
Actually you can build an Android ( Kitkat ) compatible userspace with no tweaking whatsoever.
Agreed the androidarmv6 project is a perfect base for the PI
kronflux wrote:
The hardest part would be the device board configs for the device. Telling android which drivers and whatnot to use when compiling, but even that has been started by someone. It would just need to be updated to apply to KitKat.
https://github.com/Razdroid/android_device_raspberrypi
.
I'd forget about the razdroid device tree as alot of changes have occurred since Gingerbread plus ( and no offence to the original implementers ) it's a bit of a mess anyway.
kronflux wrote:
And lastly, you would need all the vendor stuff. Which RazDroid also has started, but would need to be updated to apply to KitKat.
.
The vendor stuff for the PI is the Graphics stack ( Gralloc , HWComposer and the OpenGL/OpenVG libraries ) using the razdroid stuff as a base seems like a good idea. This is also where the bulk of the work is
kronflux wrote:
I'm not saying it would be "easy" or "point and click" - but we ARE at a point where a KitKat port is completely possible, and would actually likely not be very difficult.
Like kronflux says Kitkat is perfectly possible on the PI.
So if anyone want to get involved you can start here
https://github.com/trevd/android_vendor_broadcom_rpi
This will produce a CM11 ( 4.4.4 ) system image that will boot on the PI.
Details/Features
=============
New device tree written from scratch
A small patch needed applying to the build system which builds all binaries in arm mode because the PI doesn't support Thumb-2 which is the default mode on android arm builds and I didn't fancy converting a load of Thumb-2 assembly to Thumb-1. I also added tuning for the PI's cpu ( arm1176jzf-s ).
Currently the build uses softfp and -mfpu=vfp . I would've preferred to use hardfloat and I've compiled and experimental androideabi compatible toolchain to do that but one thing at a time eh. lol
TODO/WIP
=========
The Graphics Stack :
I took razdroids gralloc and updated it to the latest api version. this is working at the moment
I've cherrypicked a combination of the raspberryPI userland and the Broadcom source drop to create a basic EGL/GLES library. A couple of extra Android Flavour EGL attributes also had to be added to make it kitkat compatible ( namely EGL_ANDROID_recordable and EGL_ANDROID_framebuffer_target )
I've upgraded the hwcomposer to v1.3 - this is currently incomplete but is coming along nicely
===============
HACKING
=========
You can plug a keyboard straight in as the boot process starts a root console. I also added openvt and chvt to busybox so you can start logcat etc on alternative vtty's. Personally however I normally do this sort of stuff over adb. This is a little more tricky on the PI. Due the my lack of a full-size usb otg cable. To that end the boot process will also attempt to bring-up eth0 using dhcp and will print the ip address to the console if successful. You can then use adb tcp feature to connect to the PI over ethernet.
You can find an example sdcard configuration and cmdline.txt and boot partition info in this gist
https://gist.github.com/trevd/64f0a0cbc45f2d7bd210 . sdcard setup is a manual process at the moment.
Finally while I have plenty of experience porting legacy devices to the latest and greatest version of Android up until starting this project 2 weeks ago I've never had to deal with implementing the Graphic Stack mainly because the OpenGLES libraries are normally closed source binaries blobs. Additionally "Graphics" programming has never really been my thing so I figured doing this project on the PI will provide a great learning experience if nothing else
I was going to hold off posting until I had something working but seeing as the forum looks like it's about to be moved to /dev/null I thought throw this out there
Well That's all folks.
trevd