颤振:ios/native_add.podspec 文件不存在

时间:2020-12-20 22:32:07

标签: xcode flutter opencv dart

我想用颤振运行 OpenCV。首先,我尝试将 FFI 库绑定到本机代码。

Flutter Dev 说“在 iOS 上,你需要告诉 Xcode 静态链接文件:

在 Xcode 中,打开 Runner.xcworkspace。 将 C/C++/Objective-C/Swift 源文件添加到 Xcode 项目中"

但我没有'Runner.xcworkspace'的文件名

My XCode Folder

My AndroidStudio Folder

在 Flutter 中运行 opencv 或 c++ 代码非常困难。我正在研究它 3 天,但没有任何改进。

2 个答案:

答案 0 :(得分:0)

如果您遵循 flutter.dev Binding to native code using dart:ffi 上的指南,那是因为您创建了插件模板,因此 iOS 文件夹仅包含特定于插件的文件。 要找到您要查找的 iOS 文件夹,请打开创建项目时也创建的“example”文件夹,然后打开其中的 iOS 文件夹。

答案 1 :(得分:0)

对于使用 flutter 和使用 ffi 的本机代码运行 OpenCV,您可以使用以下方式:

iOS:在 Podfile 中将下一行添加到目标

pod 'OpenCV', '~> 4.3'

在 Build Settings -> Library Search Paths 添加递归路径

"$(SRCROOT)/Pods/OpenCV"

为了调试运行,您可以将 opencv.framework 添加到您的项目目录

Android:对于 Android,您有两种方法

  1. native:像谷歌上的大多数教程一样下载适用于 Android 的 SDK(.java 扩展)...
  2. c 编译:文件夹 android/app/build.gradle 添加下一部分
    android {
        ...
        defaultConfig {
            ...
            externalNativeBuild {
                        cmake {
                            // Enabling exceptions, RTTI
                            // And setting C++ standard version
                            cppFlags '-frtti -fexceptions -std=c++11'
            
                            // Shared runtime for shared libraries
                            arguments "-DANDROID_STL=c++_shared"
                        }
                    }
            ...
        }
        ...
        //external c++ plugin
        externalNativeBuild{
            cmake{
                path "<pathtoyour>/CMakeLists.txt"
            }
        }
        ...
    }

文件CMakeList.txt

cmake_minimum_required(VERSION 3.4.1) 

set( OpenCV_DIR "<path>/OpenCV-android-sdk/sdk/native/jni" )
find_package( OpenCV REQUIRED )
message(STATUS "OpenCV libraries: ${OpenCV_LIBS}")

add_library( <youe binary> SHARED <path to your c++ or c file> )
target_link_libraries( <youe binary> ${OpenCV_LIBS} )