在将原生OpenCV集成到Android Studio时遇到了R.styleable的问题。

5
我正在将openCV原生库添加到我的(开发中的)项目中。我正在按照这个指南进行操作。在构建我的项目时,我在OpenCV-android-sdk文件夹中遇到了麻烦:CameraGLSurfaceView.java出现错误,无法找到符号变量styleable,位于R.styleable.CameraBridgeViewBase。
我尝试在我的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中说的那样,出现了相似的错误。但是当我重新构建项目时,没有任何改变。


请在此处查看答案:https://dev59.com/L7Hma4cB1Zd3GeqPJU7G#66456218 - Miguel Tomás
5个回答

13
在OpenCV 4中只需更改
res.srcDirs = ['/build/master_pack-android/opencv/modules/java/android_sdk/android_gradle_lib/res']

res.srcDirs = ['res']
在 Gradle 文件中。

1
你真厉害啊 :) 我已经试了一整天找解决方案了,谢谢! - Ashu Kumar
我已经在这个上面工作了两天。这就是最终解决的方法... wtf - user6068326
非常好,我正在尝试导入模块,但是attrs文件出现了错误。我查看了很多次,它在资源管理器中显示,但在工作室中却没有显示。添加了这行代码后,帮助了我很多,非常感谢你,你应该得到1000分的答案。 - Najaf Ali

6
在openCv4中,您需要在OPENCV文件夹(opencv/build.gradle)的gradle文件中进行一些更改。您的openCv文件夹位于根目录中。
应用程序名称->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'
            }
  }

希望这能对您有所帮助!


2
如果您将OpenCV文件夹放在项目文件夹中,则必须编写“res.srcDirs = ['res']”。这解决了我的OpenCV 4问题。 - macmuri
Macmuri上面说的对我有用(尽管R.styleable仍然被红色下划线标记)。 - Robert Ruxandrescu
@Robert 你需要提供正确的 openCv4/res 路径给 srcDirs。 - Ankur

1

这也发生在我使用OpenCV4的时候,尝试下载OpenCV3.4


这就是我所做的,但它并没有(字面上)解决问题。 - Jérémy

1

将模块导入到我的项目后,我在样式文件中遇到了错误,因为我的资源文件夹在Android Studio中没有显示出来,但在文件浏览器中却显示了,然后我知道这是代码中的路径错误。

我的错误信息如下:

我遇到了这个错误

我是如何解决的?只需进入OpenCV库的gradle文件,更改res目录路径即可。

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

更改为

res.srcDirs = ['res']

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

start appear

enter image description here


0
在Android Studio 4.2 C15上的openCv4(我使用的是SDK 30),您的OPENCV文件夹(OpenCV/build.Gradle)的Gradle文件需要像这样。 假设您的openCv文件夹位于根目录中。
应用程序名称-> 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'
            }
  }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接