【发布时间】:2017-02-07 18:46:58
【问题描述】:
我正在一个使用 OpenCV 3.1.0 库的 Android Studio 2.2 的 android 项目中工作。我根据这个answer导入了库。情况如下:
- 当我为 API >= 21(确切地说是 API 23)的设备编译项目时,一切顺利。
- 当我为 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)...
我发现了这些类似的问题:
- Error: package android.hardware.camera2 does not exist OpenCV
- Can't import import android.hardware.camera2 classes
解决方案是将compileSdkVersion 设置为最小21(引入camera2 API 的版本)并确保项目的build.gradle 文件与OpenCV 匹配。
不幸的是,它对我不起作用。我仍然得到同样的错误。有什么想法吗?
我的代码在这里可用:Github repository。
感谢您的帮助!
【问题讨论】:
-
为什么要将 CompileSdk 设置为这么旧的状态?将其设置为 24,由于您的 MinSdk 为 9,因此仍将支持旧设备(但您需要确保在运行时不调用任何 camera2 api)
-
compileSdkVersion在两个build.gradle文件中都是 24。我想从 API 19 (KitKat) 提供支持。在最后一次提交中,我将minSdkVersion从 19 更改为 9 只是为了尝试(因为 OpenCV 应该提供 API 8 的支持,但appcompat-v7:24.2.1的最低 API 是 9)。但什么都没有改变。 -
@Iuliia 正如我所解释的,您提到的问题中提出的解决方案并不能解决我的问题。当我使用 Android≥5 的设备时,我没有任何问题(
camera2效果很好,不像他的情况)。当我使用 Androidcamera2 在这种情况下不必使用(因为仅适用于 API≥21),但由于某种原因,它被使用了,这就是我抛出错误的原因。 -
我遇到了同样的问题,this 回答帮助了我
标签: android opencv android-camera opencv4android opencv3.1