From 13d2667035f8e5d8319556a275bb60093e24130d Mon Sep 17 00:00:00 2001 From: Sudarsana Babu Nagineni Date: Thu, 22 Aug 2019 11:42:09 +0300 Subject: [android] jni binding refactor Move registerNatives() call to a separate file to make jni.cpp less dependent on native headers. --- platform/android/core-files.json | 2 + platform/android/src/jni.cpp | 157 ---------------------------------- platform/android/src/jni.hpp | 3 +- platform/android/src/jni_native.cpp | 164 ++++++++++++++++++++++++++++++++++++ platform/android/src/jni_native.hpp | 11 +++ platform/android/src/main.cpp | 2 +- 6 files changed, 179 insertions(+), 160 deletions(-) create mode 100755 platform/android/src/jni_native.cpp create mode 100644 platform/android/src/jni_native.hpp diff --git a/platform/android/core-files.json b/platform/android/core-files.json index 62ecc0c671..b19e5d9a93 100644 --- a/platform/android/core-files.json +++ b/platform/android/core-files.json @@ -38,6 +38,7 @@ "platform/android/src/java/util.cpp", "platform/android/src/java_types.cpp", "platform/android/src/jni.cpp", + "platform/android/src/jni_native.cpp", "platform/android/src/logger.cpp", "platform/android/src/logging_android.cpp", "platform/android/src/map/camera_position.cpp", @@ -142,6 +143,7 @@ "java/util.hpp": "platform/android/src/java/util.hpp", "java_types.hpp": "platform/android/src/java_types.hpp", "jni.hpp": "platform/android/src/jni.hpp", + "jni_native.hpp": "platform/android/src/jni_native.hpp", "logger.hpp": "platform/android/src/logger.hpp", "map/camera_position.hpp": "platform/android/src/map/camera_position.hpp", "map/image.hpp": "platform/android/src/map/image.hpp", diff --git a/platform/android/src/jni.cpp b/platform/android/src/jni.cpp index 088b3b796c..189ec29dce 100755 --- a/platform/android/src/jni.cpp +++ b/platform/android/src/jni.cpp @@ -2,66 +2,9 @@ #include -#include "annotation/marker.hpp" -#include "annotation/polygon.hpp" -#include "annotation/polyline.hpp" -#include "bitmap.hpp" -#include "bitmap_factory.hpp" -#include "connectivity_listener.hpp" -#include "conversion/conversion.hpp" -#include "conversion/collection.hpp" -#include "file_source.hpp" -#include "geojson/feature.hpp" -#include "geojson/feature_collection.hpp" -#include "geojson/geometry.hpp" -#include "geojson/geometry_collection.hpp" -#include "geojson/line_string.hpp" -#include "geojson/multi_line_string.hpp" -#include "geojson/multi_point.hpp" -#include "geojson/multi_polygon.hpp" -#include "geojson/point.hpp" -#include "geojson/polygon.hpp" -#include "geometry/lat_lng.hpp" -#include "geometry/lat_lng_bounds.hpp" -#include "geometry/lat_lng_quad.hpp" -#include "geometry/projected_meters.hpp" -#include "graphics/pointf.hpp" -#include "graphics/rectf.hpp" -#include "gson/json_array.hpp" -#include "gson/json_element.hpp" -#include "gson/json_object.hpp" -#include "gson/json_primitive.hpp" -#include "java_types.hpp" -#include "map_renderer.hpp" -#include "map_renderer_runnable.hpp" -#include "native_map_view.hpp" -#ifndef MBGL_MODULE_OFFLINE_DISABLE -#include "offline/offline_manager.hpp" -#include "offline/offline_region.hpp" -#include "offline/offline_region_definition.hpp" -#include "offline/offline_region_error.hpp" -#include "offline/offline_region_status.hpp" -#endif -#include "style/transition_options.hpp" -#include "style/layers/layer_manager.hpp" -#include "style/sources/source.hpp" -#include "style/light.hpp" -#include "style/formatted.hpp" -#include "style/formatted_section.hpp" -#ifndef MBGL_MODULE_SNAPSHOT_DISABLE -#include "snapshotter/map_snapshotter.hpp" -#include "snapshotter/map_snapshot.hpp" -#endif -#include "text/collator_jni.hpp" -#include "text/local_glyph_rasterizer_jni.hpp" -#include "text/format_number_jni.hpp" -#include "logger.hpp" - namespace mbgl { namespace android { -void RegisterNativeHTTPRequest(JNIEnv&); - JavaVM* theJVM; //TODO: remove @@ -107,105 +50,5 @@ void detach_jni_thread(JavaVM* vm, JNIEnv** env, bool detach) { *env = nullptr; } -void registerNatives(JavaVM *vm) { - theJVM = vm; - - jni::JNIEnv& env = jni::GetEnv(*vm, jni::jni_version_1_6); - - // For the DefaultFileSource - static mbgl::util::RunLoop mainRunLoop; - FileSource::registerNative(env); - - // Basic types - java::registerNatives(env); - java::util::registerNative(env); - PointF::registerNative(env); - RectF::registerNative(env); - - // GeoJSON - geojson::Feature::registerNative(env); - geojson::FeatureCollection::registerNative(env); - geojson::Geometry::registerNative(env); - geojson::GeometryCollection::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); - - // Geometry - LatLng::registerNative(env); - LatLngBounds::registerNative(env); - LatLngQuad::registerNative(env); - ProjectedMeters::registerNative(env); - - // GSon - gson::JsonArray::registerNative(env); - gson::JsonElement::registerNative(env); - gson::JsonObject::registerNative(env); - gson::JsonPrimitive::registerNative(env); - - //Annotation - Marker::registerNative(env); - Polygon::registerNative(env); - Polyline::registerNative(env); - - // Map - MapRenderer::registerNative(env); - MapRendererRunnable::registerNative(env); - NativeMapView::registerNative(env); - - // Http - RegisterNativeHTTPRequest(env); - - // Bitmap - Bitmap::registerNative(env); - BitmapFactory::registerNative(env); - - // Style - TransitionOptions::registerNative(env); - LayerManagerAndroid::get()->registerNative(env); - Source::registerNative(env); - Light::registerNative(env); - Position::registerNative(env); - Formatted::registerNative(env); - FormattedSection::registerNative(env); - - // Map - CameraPosition::registerNative(env); - Image::registerNative(env); - - // Connectivity - ConnectivityListener::registerNative(env); - - // Offline -#ifndef MBGL_MODULE_OFFLINE_DISABLE - OfflineManager::registerNative(env); - OfflineRegion::registerNative(env); - OfflineRegionDefinition::registerNative(env); - OfflineTilePyramidRegionDefinition::registerNative(env); - OfflineGeometryRegionDefinition::registerNative(env); - OfflineRegionError::registerNative(env); - OfflineRegionStatus::registerNative(env); -#endif - - // Snapshotter -#ifndef MBGL_MODULE_SNAPSHOT_DISABLE - MapSnapshotter::registerNative(env); - MapSnapshot::registerNative(env); -#endif - - // text - LocalGlyphRasterizer::registerNative(env); - Locale::registerNative(env); - Collator::registerNative(env); - StringUtils::registerNative(env); - NumberFormat::registerNative(env); - - // Logger - Logger::registerNative(env); -} - } // namespace android } // namespace mbgl diff --git a/platform/android/src/jni.hpp b/platform/android/src/jni.hpp index e5df92e701..cb519f911d 100644 --- a/platform/android/src/jni.hpp +++ b/platform/android/src/jni.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include typedef struct _jmethodID* jmethodID; typedef struct _JavaVM JavaVM; @@ -17,7 +18,5 @@ extern std::string dataPath; bool attach_jni_thread(JavaVM* vm, JNIEnv** env, std::string threadName); void detach_jni_thread(JavaVM* vm, JNIEnv** env, bool detach); -extern void registerNatives(JavaVM* vm); - } // namespace android } // namespace mbgl diff --git a/platform/android/src/jni_native.cpp b/platform/android/src/jni_native.cpp new file mode 100755 index 0000000000..df96ba9759 --- /dev/null +++ b/platform/android/src/jni_native.cpp @@ -0,0 +1,164 @@ +#include "jni_native.hpp" + +#include "annotation/marker.hpp" +#include "annotation/polygon.hpp" +#include "annotation/polyline.hpp" +#include "bitmap.hpp" +#include "bitmap_factory.hpp" +#include "connectivity_listener.hpp" +#include "conversion/conversion.hpp" +#include "conversion/collection.hpp" +#include "file_source.hpp" +#include "geojson/feature.hpp" +#include "geojson/feature_collection.hpp" +#include "geojson/geometry.hpp" +#include "geojson/geometry_collection.hpp" +#include "geojson/line_string.hpp" +#include "geojson/multi_line_string.hpp" +#include "geojson/multi_point.hpp" +#include "geojson/multi_polygon.hpp" +#include "geojson/point.hpp" +#include "geojson/polygon.hpp" +#include "geometry/lat_lng.hpp" +#include "geometry/lat_lng_bounds.hpp" +#include "geometry/lat_lng_quad.hpp" +#include "geometry/projected_meters.hpp" +#include "graphics/pointf.hpp" +#include "graphics/rectf.hpp" +#include "gson/json_array.hpp" +#include "gson/json_element.hpp" +#include "gson/json_object.hpp" +#include "gson/json_primitive.hpp" +#include "java_types.hpp" +#include "map_renderer.hpp" +#include "map_renderer_runnable.hpp" +#include "native_map_view.hpp" +#ifndef MBGL_MODULE_OFFLINE_DISABLE +#include "offline/offline_manager.hpp" +#include "offline/offline_region.hpp" +#include "offline/offline_region_definition.hpp" +#include "offline/offline_region_error.hpp" +#include "offline/offline_region_status.hpp" +#endif +#include "style/transition_options.hpp" +#include "style/layers/layer_manager.hpp" +#include "style/sources/source.hpp" +#include "style/light.hpp" +#include "style/formatted.hpp" +#include "style/formatted_section.hpp" +#ifndef MBGL_MODULE_SNAPSHOT_DISABLE +#include "snapshotter/map_snapshotter.hpp" +#include "snapshotter/map_snapshot.hpp" +#endif +#include "text/collator_jni.hpp" +#include "text/local_glyph_rasterizer_jni.hpp" +#include "text/format_number_jni.hpp" +#include "logger.hpp" + +namespace mbgl { +namespace android { + +void RegisterNativeHTTPRequest(JNIEnv&); + +void registerNatives(JavaVM *vm) { + theJVM = vm; + + jni::JNIEnv& env = jni::GetEnv(*vm, jni::jni_version_1_6); + + // For the DefaultFileSource + static mbgl::util::RunLoop mainRunLoop; + FileSource::registerNative(env); + + // Basic types + java::registerNatives(env); + java::util::registerNative(env); + PointF::registerNative(env); + RectF::registerNative(env); + + // GeoJSON + geojson::Feature::registerNative(env); + geojson::FeatureCollection::registerNative(env); + geojson::Geometry::registerNative(env); + geojson::GeometryCollection::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); + + // Geometry + LatLng::registerNative(env); + LatLngBounds::registerNative(env); + LatLngQuad::registerNative(env); + ProjectedMeters::registerNative(env); + + // GSon + gson::JsonArray::registerNative(env); + gson::JsonElement::registerNative(env); + gson::JsonObject::registerNative(env); + gson::JsonPrimitive::registerNative(env); + + //Annotation + Marker::registerNative(env); + Polygon::registerNative(env); + Polyline::registerNative(env); + + // Map + MapRenderer::registerNative(env); + MapRendererRunnable::registerNative(env); + NativeMapView::registerNative(env); + + // Http + RegisterNativeHTTPRequest(env); + + // Bitmap + Bitmap::registerNative(env); + BitmapFactory::registerNative(env); + + // Style + TransitionOptions::registerNative(env); + LayerManagerAndroid::get()->registerNative(env); + Source::registerNative(env); + Light::registerNative(env); + Position::registerNative(env); + Formatted::registerNative(env); + FormattedSection::registerNative(env); + + // Map + CameraPosition::registerNative(env); + Image::registerNative(env); + + // Connectivity + ConnectivityListener::registerNative(env); + + // Offline +#ifndef MBGL_MODULE_OFFLINE_DISABLE + OfflineManager::registerNative(env); + OfflineRegion::registerNative(env); + OfflineRegionDefinition::registerNative(env); + OfflineTilePyramidRegionDefinition::registerNative(env); + OfflineGeometryRegionDefinition::registerNative(env); + OfflineRegionError::registerNative(env); + OfflineRegionStatus::registerNative(env); +#endif + + // Snapshotter +#ifndef MBGL_MODULE_SNAPSHOT_DISABLE + MapSnapshotter::registerNative(env); + MapSnapshot::registerNative(env); +#endif + + // text + LocalGlyphRasterizer::registerNative(env); + Locale::registerNative(env); + Collator::registerNative(env); + StringUtils::registerNative(env); + NumberFormat::registerNative(env); + + // Logger + Logger::registerNative(env); +} + +} // namespace android +} // namespace mbgl diff --git a/platform/android/src/jni_native.hpp b/platform/android/src/jni_native.hpp new file mode 100644 index 0000000000..a4c89d3036 --- /dev/null +++ b/platform/android/src/jni_native.hpp @@ -0,0 +1,11 @@ +#pragma once + +#include "jni.hpp" + +namespace mbgl { +namespace android { + +void registerNatives(JavaVM* vm); + +} // namespace android +} // namespace mbgl diff --git a/platform/android/src/main.cpp b/platform/android/src/main.cpp index 03a8288719..9b5c6c1974 100644 --- a/platform/android/src/main.cpp +++ b/platform/android/src/main.cpp @@ -1,4 +1,5 @@ #include "jni.hpp" +#include "jni_native.hpp" #include extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *) { @@ -6,4 +7,3 @@ extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *) { mbgl::android::registerNatives(vm); return JNI_VERSION_1_6; } - -- cgit v1.2.1