juce_OpenGLContext.cpp has many "#if ! JUCE_ANDROID"s because in Android JUCE does not create a thread for OpenGL rendering, and registers callbacks instead.
My co-worker (as well as Apple's docs*) claims that in OS X too one should register render callbacks (via CVDisplayLink) to get better behavior wrt garanteeing that frames are rendered per screen frames.
I made a small commit which defines JUCE_OPENGL_CREATE_JUCE_RENDER_THREAD instead of using "! JUCE_ANDROID" at https://github.com/soundradix/JUCE/commit/480da77d09fc6cf5cedfb593e2ee7680dfbb54b0
The goal is to then change the osx implementation to use CVDisplayLink and so that JUCE_OPENGL_CREATE_JUCE_RENDER_THREAD will not be set in os x too and it will use CVDisplayLink.
Can you take a look at this change and hopefully incorporate it into JUCE if you like it?
This commit also makes OpenGLContext::CachedImage not inherit from Thread on Android (where the thread is never started), and has some related changes.
Note that I have not tested my changes on Android and don't have an Android device to test on..