I (sometimes, not always) get crashes on Android. I think I have finally understood the root cause.
In juce_android_Windowing.cpp there is this code:
view = GlobalRef (android.activity.callObjectMethod (JuceAppActivity.createNewView, component.isOpaque(), (jlong) this));
The 'this' is a pointer, and it gets cast to a (64-bit) long. This is a Bad Thing. What happens when I see a crash is for example, that the 'this' is actually 1f2d10 but when the Java side gets it, the 'host' value in createNewView() is 1f2d104b62bb38
The real value is clearly there, but some unfortunate thing has happened to it.
What I would suggest is using an integer handle value to uniquely identify the items on each side, and look them up in the glue code. That way there's no problem with casting and byte ordering etc.