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

时间:2016-09-29 12:28:12

标签: android opencv android-camera opencv4android opencv3.1

我正在使用Android Studio 2.2的Android项目中使用OpenCV 3.1.0库。我根据此answer导入了库。情况如下:

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

Gradle log

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)...

我发现了类似的问题:

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

不幸的是,它对我不起作用。我仍然得到同样的错误。有什么想法吗?

我的代码可在此处找到:Github repository

感谢您的帮助!

1 个答案:

答案 0 :(得分:6)

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

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

Disable instant run

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