void registerNatives(JavaVM *vm) {
    theJVM = vm;
    jni::JNIEnv& env = jni::GetEnv(*vm, jni::jni_version_1_6);
    
    static mbgl::util::RunLoop mainRunLoop;
    FileSource::registerNative(env);
    
    java::registerNatives(env);
    java::util::registerNative(env);
    PointF::registerNative(env);
    RectF::registerNative(env);
    
    geojson::Feature::registerNative(env);
    geojson::FeatureCollection::registerNative(env);
    geojson::Geometry::registerNative(env);
    geojson::LineString::registerNative(env);
    geojson::MultiLineString::registerNative(env);
    geojson::MultiPoint::registerNative(env);
    geojson::MultiPolygon::registerNative(env);
    geojson::Point::registerNative(env);
    geojson::Polygon::registerNative(env);
    geojson::Position::registerNative(env);
    
    LatLng::registerNative(env);
    LatLngBounds::registerNative(env);
    LatLngQuad::registerNative(env);
    ProjectedMeters::registerNative(env);
    
    gson::JsonArray::registerNative(env);
    gson::JsonElement::registerNative(env);
    gson::JsonObject::registerNative(env);
    gson::JsonPrimitive::registerNative(env);
    
    Marker::registerNative(env);
    Polygon::registerNative(env);
    Polyline::registerNative(env);
    
    MapRenderer::registerNative(env);
    MapRendererRunnable::registerNative(env);
    NativeMapView::registerNative(env);
    
    RegisterNativeHTTPRequest(env);
    
    Bitmap::registerNative(env);
    BitmapFactory::registerNative(env);
    
    TransitionOptions::registerNative(env);
    registerNativeLayers(env);
    registerNativeSources(env);
    Light::registerNative(env);
    Position::registerNative(env);
    Stop::registerNative(env);
    CategoricalStops::registerNative(env);
    ExponentialStops::registerNative(env);
    IdentityStops::registerNative(env);
    IntervalStops::registerNative(env);
    
    CameraPosition::registerNative(env);
    Image::registerNative(env);
    
    ConnectivityListener::registerNative(env);
    
    OfflineManager::registerNative(env);
    OfflineRegion::registerNative(env);
    OfflineRegionDefinition::registerNative(env);
    OfflineTilePyramidRegionDefinition::registerNative(env);
    OfflineRegionError::registerNative(env);
    OfflineRegionStatus::registerNative(env);
    
    MapSnapshotter::registerNative(env);
    MapSnapshot::registerNative(env);
}