From b8a5ab94d3991dac657ab2a9d9835d240767b737 Mon Sep 17 00:00:00 2001 From: Burundug Date: Fri, 7 Mar 2025 14:52:02 +0300 Subject: [PATCH] fix(android): replace getClass() with javaClassStatic() for compatibility Android 8+ restricts the usage of getClass() in certain cases, causing crashes. This commit replaces `_javaPart->getClass()` with `_javaPart->javaClassStatic()`, which is a more stable approach. This change is based on a similar fix in react-native-nitro: https://github.com/mrousavy/nitro/pull/582 --- .../android/c++/JHybridMultipleImagePickerSpec.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/nitrogen/generated/android/c++/JHybridMultipleImagePickerSpec.cpp b/nitrogen/generated/android/c++/JHybridMultipleImagePickerSpec.cpp index befbc56..a4a29eb 100644 --- a/nitrogen/generated/android/c++/JHybridMultipleImagePickerSpec.cpp +++ b/nitrogen/generated/android/c++/JHybridMultipleImagePickerSpec.cpp @@ -110,24 +110,24 @@ namespace margelo::nitro::multipleimagepicker { } size_t JHybridMultipleImagePickerSpec::getExternalMemorySize() noexcept { - static const auto method = _javaPart->getClass()->getMethod("getMemorySize"); + static const auto method = _javaPart->javaClassStatic()->getMethod("getMemorySize"); return method(_javaPart); } // Properties - + // Methods void JHybridMultipleImagePickerSpec::openPicker(const NitroConfig& config, const std::function& /* result */)>& resolved, const std::function& rejected) { - static const auto method = _javaPart->getClass()->getMethod /* config */, jni::alias_ref /* resolved */, jni::alias_ref /* rejected */)>("openPicker"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* config */, jni::alias_ref /* resolved */, jni::alias_ref /* rejected */)>("openPicker"); method(_javaPart, JNitroConfig::fromCpp(config), JFunc_void_std__vector_PickerResult_::fromCpp(resolved), JFunc_void_double::fromCpp(rejected)); } void JHybridMultipleImagePickerSpec::openCrop(const std::string& image, const NitroCropConfig& config, const std::function& resolved, const std::function& rejected) { - static const auto method = _javaPart->getClass()->getMethod /* image */, jni::alias_ref /* config */, jni::alias_ref /* resolved */, jni::alias_ref /* rejected */)>("openCrop"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* image */, jni::alias_ref /* config */, jni::alias_ref /* resolved */, jni::alias_ref /* rejected */)>("openCrop"); method(_javaPart, jni::make_jstring(image), JNitroCropConfig::fromCpp(config), JFunc_void_CropResult::fromCpp(resolved), JFunc_void_double::fromCpp(rejected)); } void JHybridMultipleImagePickerSpec::openPreview(const std::vector& media, double index, const NitroPreviewConfig& config, const std::function& onLongPress) { - static const auto method = _javaPart->getClass()->getMethod> /* media */, double /* index */, jni::alias_ref /* config */, jni::alias_ref /* onLongPress */)>("openPreview"); + static const auto method = _javaPart->javaClassStatic()->getMethod> /* media */, double /* index */, jni::alias_ref /* config */, jni::alias_ref /* onLongPress */)>("openPreview"); method(_javaPart, [&]() { size_t __size = media.size(); jni::local_ref> __array = jni::JArrayClass::newArray(__size); @@ -139,7 +139,7 @@ namespace margelo::nitro::multipleimagepicker { }(), index, JNitroPreviewConfig::fromCpp(config), JFunc_void_double::fromCpp(onLongPress)); } void JHybridMultipleImagePickerSpec::openCamera(const NitroCameraConfig& config, const std::function& resolved, const std::function& rejected) { - static const auto method = _javaPart->getClass()->getMethod /* config */, jni::alias_ref /* resolved */, jni::alias_ref /* rejected */)>("openCamera"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* config */, jni::alias_ref /* resolved */, jni::alias_ref /* rejected */)>("openCamera"); method(_javaPart, JNitroCameraConfig::fromCpp(config), JFunc_void_CameraResult::fromCpp(resolved), JFunc_void_double::fromCpp(rejected)); }