【问题标题】:Problems at R.styleable while integrating native opencv to android studio将本机 opencv 集成到 android studio 时 R.styleable 的问题
【发布时间】:2019-06-16 09:45:44
【问题描述】:

我将 openCV 本机库添加到我的(在开发中)项目中。我正在关注这个guide。我在构建项目的最后一步遇到了麻烦,在 OpenCV-android-sdk 文件夹中:CameraGLSurfaceView.javaR.styleable.CameraBridgeViewBase 出现错误cannot find symbol variable styleable

我尝试在我的values 文件夹中添加一个attrs.xml 文件,其中包含以下内容:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <declare-styleable name = "CameraBridgeViewBase" >
        <attr name="show_fps" format="boolean"/>
        <attr name="camera_id" format="integer" >
            <enum name="any" value="-1" />
            <enum name="back" value="2" />
            <enum name="front" value="1" />
        </attr>
    </declare-styleable>
</resources>

正如它在this 中所说的非常相似的错误。但是当我重建我的项目时没有任何改变。

【问题讨论】:

标签: android android-ndk native opencv4android


【解决方案1】:

在opencv 4中只需更改

res.srcDirs = ['/build/master_pack-android/opencv/modules/java/android_sdk/android_gradle_lib/res']

res.srcDirs = ['res']

在 gradle 文件中

【讨论】:

  • 你成功了 :) 从昨天开始就一直在寻找解决方案 :) 谢谢
  • 我已经为此工作了 2 天。这就是最终修复它的原因...... wtf
  • 非常棒,我正在尝试导入模块,但 attrs 文件出现错误,我多次查看它在资源管理器中显示,但在添加此行后不在工作室中,非常感谢,你应该得到 1000 分对于这个答案..
【解决方案2】:

在 openCv4 中,您需要对 OPENCV 文件夹 (opencv/build.gradle) 的 gradle 文件进行一些更改。 您的 openCv 文件夹位于根目录中。

ApplicationName->OpenCv->res

只需复制路径并将您的 gradle 文件更新为:

sourceSets {
    main {
                jniLibs.srcDirs = ['../../jni']
                java.srcDirs = ['src']  
                aidl.srcDirs = ['src']
                **res.srcDirs = ['/path-to-your-application/
    ApplicationName/openCv4/res']**
                manifest.srcFile 'AndroidManifest.xml'
            }
  }

我希望这会有所帮助!

【讨论】:

  • 如果您将 OpenCV 文件夹放在项目文件夹中,则必须编写“res.srcDirs=['res']” 这解决了我的 OpenCV 4 问题
  • macmuri 上面所说的为我做了(尽管 R.styleable 仍然带有红色下划线)。
  • @Robert 你必须给 srcDirs 提供正确的 openCv4/res 路径
【解决方案3】:

我的OpenCV4也出现这种情况,尝试下载OpenCV3.4

【讨论】:

  • 这就是我所做的,但它并没有(字面上)解决问题。
【解决方案4】:

将模块导入我的项目后,我在可样式文件中收到错误,因为我的 res 文件夹没有在 android studio 中显示给我,但它显示在文件资源管理器中,然后我知道这是代码中的路径错误。

我的错误是这样的。

我是如何解决的,我只是进入 open cv 库的 gradle 文件并更改 res 目录路径

来自res.srcDirs = ['/build/master_pack-android/opencv/modules/java/android_sdk/android_gradle_lib/res']

res.srcDirs = ['res']

然后同步它开始为我工作,并且 res 文件夹出现在项目文件中。

【讨论】:

    【解决方案5】:

    在 Android Studio 4.2 C15(我在 SDK 30)上的 openCv4 中,您的 OPENCV 文件夹(OpenCV/build.Gradle)的 Gradle 文件需要是这样的。 假设您的 openCv 文件夹存在于根目录中。

    ApplicationName->OpenCv->res

    只需复制路径并将您的 gradle 文件更新为:

    sourceSets {
        main {
                    jniLibs.srcDirs = ['build\\intermediates\\library_jni\\debug\\jni']
                    java.srcDirs = ['java\\src']
                    aidl.srcDirs = ['src']
                    res.srcDirs = ['java\\res']
                    manifest.srcFile 'java\\AndroidManifest.xml'
                }
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2018-08-14
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多