Expo 模块和本地第三方原生库

问题描述 投票:0回答:1

我试图构建我的第一个 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 模块的依赖项。

有什么想法吗?

  1. 我使用以下说明创建了一个 Expo 模块:https://docs.expo.dev/modules/get-started/#creating-a-new-module-with-an-example-project

  2. 我从此链接下载了适用于 Android 的 OpenCV SDK:https://opencv.org/releases/

  3. 我遵循了

    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')
//   }
//
//
//

不幸的是,我仍然收到上述错误。

android react-native opencv expo expo-module
1个回答
0
投票
  1. 从此处下载 zip 文件:https://sourceforge.net/projects/opencvlibrary/files/opencv-android/

  2. 解压zip文件,最好的位置是在你的工作区文件夹中,但这并不重要。

  3. 在 Android Studio 中,单击 File->New->Import Module 并导航到 \path_to_your_unzipped_file\OpenCV-android-sdk\sdk\java 并点击 Ok,然后接受所有默认对话框。

  4. 在应用程序模块的 gradle 文件中,将其添加到依赖项块中:

dependencies {
     compile project(':openCVLibraryXYZ')
     //rest of code
}
  1. 其中 XYZ 是您下载的确切版本,例如在我的例子中:
dependencies {
   compile project(':openCVLibrary450')
   //rest of code
}
© www.soinside.com 2019 - 2024. All rights reserved.