Flutter 从颤振插件加载预构建的动态库 我试图在颤动项目中使用我的C++库。为此,我遵循本指南从源代码部分跳过构建,因为在我的例子中,lib已经构建好了

Flutter 从颤振插件加载预构建的动态库 我试图在颤动项目中使用我的C++库。为此,我遵循本指南从源代码部分跳过构建,因为在我的例子中,lib已经构建好了,flutter,dart,Flutter,Dart,我的librPPG.so位于项目的根目录下,当我尝试将其加载到/lib/rppg\u plugin.dart中时,如下所示: final DynamicLibrary rPPGLib=Platform.isAndroid ? DynamicLibrary.open(“../librPPG.so”) :DynamicLibrary.open(“rPPG.framework/rPPG”); 我被抛出一个错误,说找不到库 因此,我的问题是,我应该将.so库放在项目文件夹中的什么位置,以便访问它。对于

我的
librPPG.so
位于项目的根目录下,当我尝试将其加载到
/lib/rppg\u plugin.dart
中时,如下所示:

final DynamicLibrary rPPGLib=Platform.isAndroid
? DynamicLibrary.open(“../librPPG.so”)
:DynamicLibrary.open(“rPPG.framework/rPPG”);
我被抛出一个错误,说找不到库

因此,我的问题是,我应该将
.so
库放在项目文件夹中的什么位置,以便访问它。对于使用
.framework

干杯 对于Android,为每个架构(arm64-v8a、armeabi-v7)创建src/main/jniLibs文件夹和子目录。为每个架构放置.so文件。编辑插件的build.gradle文件:

android {
    defaultConfig {
        externalNativeBuild {
            cmake {
            }
        }
    }

    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }

    sourceSets {
        main {
            jniLibs.srcDirs = ['src/main/jniLibs']
        }
    }
}
在CMAKE文件中,指定共享库:

cmake_minimum_required(VERSION 3.4.1)

add_library( librPPG SHARED IMPORTED )
set_target_properties(librPPG PROPERTIES IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/librPPG.so)
如果您不需要单独的,那么对于每个ABI,您可以更改路径。同时从
DynamicLibrary.open
call中删除“../”-这是一个库名,而不是路径

我可能错了。要包含iOS框架,请将以下行添加到插件的.podspec文件中:

android {
    defaultConfig {
        externalNativeBuild {
            cmake {
            }
        }
    }

    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }

    sourceSets {
        main {
            jniLibs.srcDirs = ['src/main/jniLibs']
        }
    }
}
s.preserve_路径='rPPG.framework'
s、 xcconfig={“其他\u LDFLAGS'=>'-framework rPPG'}
s、 供应商的框架='rPPG.framework'

谢谢!我尝试了你的解决方案,但仍然得到相同的错误,我用当前的完整设置更新了我的帖子,
CMakeLists.txt
中的目标不应该是
rPPG
,因为库是自动添加的吗?