编程语言
首页 > 编程语言> > Android Studio,OpenCV jar,java.lang.ClassNotFoundException:org.opencv.R $styleable

Android Studio,OpenCV jar,java.lang.ClassNotFoundException:org.opencv.R $styleable

作者:互联网

网络上有关如何在Android Studio中使用OpenCV的大多数示例都涉及将OpenCV模块导入到您的项目中.但是,我试图将OpenCV用作jar,以便避免使用OpenCV的副本使源代码控制存储库混乱.

这些就是我为名为“ app”的应用所执行的步骤.

答:在/ Project / apps下创建一个libs目录.将OpenCV jar放在此处.还将opencv本机库放在子目录中.

B.在/Project/app/build.gradle中执行以下操作

将这些行放在顶部:

repositories { flatDir { dirs 'libs'    } }

将这些行放在android部分中:

sourceSets.main.jniLibs.srcDirs = ['libs']

将此行放在依赖项部分:

    compile fileTree(dir: 'libs', include: ['*.jar'])

C.在应用程序标签之后,将这些行添加到AndroidManifest.xml中.

    <uses-sdk android:minSdkVersion="9"/>
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-feature android:name="android.hardware.camera" android:required="false"/>
    <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
    <uses-feature android:name="android.hardware.camera.front" android:required="false"/>
    <uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/>

D.不确定是否需要这样做,我尝试了是否使用-似乎没有区别:我在AndroidManifest.xml的application标记内添加以下行:

        <uses-library android:name="org.opencv.android.JavaCameraView" />

E.最后是我的布局xml:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:opencv="http://schemas.android.com/apk/lib/org.opencv.android.JavaCameraView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <org.opencv.android.JavaCameraView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:visibility="gone"
        android:id="@+id/main_activity_surface_view"
        opencv:show_fps="true"
        opencv:camera_id="any" />

    </LinearLayout>

这一切都很好.我可以在自己的活动中引用OpenCV,而不会出错.但是布局编辑器给出以下错误:无法实例化以下类:org.opencv.android.JavaCameraView. java.lang.ClassNotFoundException:org.opencv.R $styleable.

如果只是一个渲染问题,也许我可以忽略它,但是当我运行它时会发生类似的错误.

我想念什么?

(我知道SO中关于此错误的问题有点类似,但他的解决方案涉及导入整个模块,该模块确实有效,但正是我要避免的事情.)

解决方法:

错误消息:

The following classes could not be instantiated: org.opencv.android.JavaCameraView. java.lang.ClassNotFoundException: org.opencv.R$styleable

表示在构建时找不到OpenCV资源.如果您将OpenCV包含在jar库中,那将是问题的根源-jar中没有资源.

解决方案是将OpenCV构建为AAR,因为AAR确实有资源.为此构造一个库模块,将其编译为AAR,然后在需要的任何地方重复使用该归档文件.

标签:android-studio,opencv,android
来源: https://codeday.me/bug/20191121/2053346.html