我试图构建我的第一个 Expo 模块(到目前为止我真的很喜欢这个 API!)并且我有一个有点独特的用例,它似乎超出了可用文档的范围。
我正在尝试包装 OpenCV 以提供对其某些图像处理的访问。到目前为止,我已经通读了 Expo Modules API 文档,这似乎是最相关的教程:https://docs.expo.dev/modules/third-party-library/
但是,本指南似乎仅解释了如何包装 remote 第三方库,这些库可以通过
implementation
文件中的 build.gradle
声明以及 Android 和 s.dependency
文件中的 .podspec
声明添加分别是iOS。
但是,OpenCV 只能作为本地模块使用,必须作为本地模块下载并导入。到目前为止,我只能尝试将其添加到 Android 版本,但我不断收到相同的错误:
Could not resolve project :opencv.
Required by:
project :app > project :expo > project :expo-opencv
> No matching configuration of project :opencv was found.
主要问题似乎是 OpenCV SDK 没有正确添加为 Expo 模块的依赖项。
有什么想法吗?
我使用以下说明创建了一个 Expo 模块:https://docs.expo.dev/modules/get-started/#creating-a-new-module-with-an-example-project
我从此链接下载了适用于 Android 的 OpenCV SDK:https://opencv.org/releases/
我遵循了
OpenCV-android-sdk/sdk/build.gradle
文件顶部注释掉的这些指示。他们描述了如何导入 OpenCV 模块并将其作为依赖项链接。
//
// Notes about integration OpenCV into existed Android Studio application project are below (application 'app' module should exist).
//
// This file is located in \<OpenCV-android-sdk\>/sdk directory (near 'etc', 'java', 'native' subdirectories)
//
// Add module into Android Studio application project:
//
// - Android Studio way:
// (will copy almost all OpenCV Android SDK into your project, \~200Mb)
//
// Import module: Menu -\> "File" -\> "New" -\> "Module" -\> "Import Gradle project":
// Source directory: select this "sdk" directory
// Module name: ":opencv"
//
// - or attach library module from OpenCV Android SDK
// (without copying into application project directory, allow to share the same module between projects)
//
// Edit "settings.gradle" and add these lines:
//
// def opencvsdk='\<path_to_opencv_android_sdk_rootdir\>'
// // You can put declaration above into gradle.properties file instead (including file in HOME directory),
// // but without 'def' and apostrophe symbols ('): opencvsdk=\<path_to_opencv_android_sdk_rootdir\>
// include ':opencv'
// project(':opencv').projectDir = new File(opencvsdk + '/sdk')
//
//
//
// Add dependency into application module:
//
// - Android Studio way:
// "Open Module Settings" (F4) -\> "Dependencies" tab
//
// - or add "project(':opencv')" dependency into app/build.gradle:
//
// dependencies {
// implementation fileTree(dir: 'libs', include: \['\*.jar'\])
// ...
// implementation project(':opencv')
// }
//
//
//
不幸的是,我仍然收到上述错误。
从此处下载 zip 文件:https://sourceforge.net/projects/opencvlibrary/files/opencv-android/
解压zip文件,最好的位置是在你的工作区文件夹中,但这并不重要。
在 Android Studio 中,单击 File->New->Import Module 并导航到 \path_to_your_unzipped_file\OpenCV-android-sdk\sdk\java 并点击 Ok,然后接受所有默认对话框。
在应用程序模块的 gradle 文件中,将其添加到依赖项块中:
dependencies {
compile project(':openCVLibraryXYZ')
//rest of code
}
dependencies {
compile project(':openCVLibrary450')
//rest of code
}