ClassNotFoundException:使用OpenCV 3.1.0的android.hardware.camera2.CameraAccessException

Dav*_*uel 7 android opencv android-camera opencv4android opencv3.1

我正在使用Android Studio 2.2的Android项目中使用OpenCV 3.1.0库.我根据这个答案导入了库.情况如下:

  • 当我为API> = 21(完全是API 23)的设备编译项目时,一切顺利.
  • 当我为API <21的设备(完全是API 19,我想支持的最小API)编译项目时,我收到以下编译错误:

Gradle日志

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformClassesWithInstantRunForDebug'.
> java.lang.ClassNotFoundException: android.hardware.camera2.CameraAccessException

* Try:
Run with --info or --debug option to get more log output.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformClassesWithInstantRunForDebug'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)...
Run Code Online (Sandbox Code Playgroud)

我发现了类似的问题:

在他们两个中,解决方案是将compileSdkVersion最小值设置为21(camera2引入API 的版本),并确保build.gradle项目和OpenCV的文件匹配.

不幸的是,它对我不起作用.我仍然得到同样的错误.任何的想法?

我的代码在这里可用:Github存储库.

谢谢你的帮助!

Dav*_*uel 6

最后,由于@JavierMollá,我找到了一个时间解决方案.

关闭Instant Run解决了这个问题.转到File > Settings > Build, Execution, Deployment > InstantRun并取消选中Enable Instant Run to hot swap code....

禁用即时运行

Instant Run是Android Studio的一个主要功能,但不幸的是它似乎仍在进行中......正如@AndreKR建议的那样,它可能与此问题相关#212672.