2016-09-29 3 views
7

Я работаю в проекте Android с Android Studio 2.2, в котором используется библиотека OpenCV 3.1.0. Я импортировал библиотеку в соответствии с этим answer. Возможна ситуация:ClassNotFoundException: android.hardware.camera2.CameraAccessException с 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)... 

Я нашел эти же вопросы:

В обоих из них решение было установить compileSdkVersion на минимум 21 (версия которой была введена camera2 API) и убедитесь, что build.gradle файлы проекта и матч OpenCV.

К сожалению, для меня это не сработало. Я все равно получаю ту же ошибку. Есть идеи?

Мой код доступен здесь: Github repository.

Благодарим за помощь!

+0

Почему вы хотите установить CompileSdk в такое старое государство? Установите его равным 24, и поскольку у вас есть MinSdk из 9, старые устройства все равно будут поддерживаться (но вам нужно убедиться, что во время выполнения вы не вызываете никакой камеры2 apis) – GoneUp

+1

'compileSdkVersion' в обоих файлах' build.gradle' 24. Я хочу предоставить поддержку API 19 (KitKat). В последнем коммите я изменил «minSdkVersion» с 19 на 9, чтобы попробовать (поскольку OpenCV должен предоставлять поддержку от API 8, но с «appcompat-v7: 24.2.1» минимальный API равен 9). Но ничего не изменилось. –

+0

Возможный дубликат [Ошибка: пакет android.hardware.camera2 не существует OpenCV] (http://stackoverflow.com/questions/36204781/error-package-android-hardware-camera2-does-not-exist-opencv) –

ответ

6

Наконец-то я нашел временное решение благодаря @ JavierMollá.

Отключение Мгновенный запуск решил проблему. Перейдите на страницу File > Settings > Build, Execution, Deployment > InstantRun и снимите отметку Enable Instant Run to hot swap code....

Disable instant run

Instant Run является одной из главных особенностей Android Studio, но, к сожалению, кажется, что она по-прежнему работает в прогресс ... Как говорит @AndreKR, это может быть связано с этим вопросом #212672.

+0

Итак, во время мгновенного запуска была ошибка, и когда вы выключаете Instant Run, ошибка исчезает. Вау! Сюрприз! -1 для не-решения. – AndreKR

+0

@AndreKR Спасибо за лучшее решение. Если вы прочтете мой ответ, вы увидите «временное решение», если вы найдете что-нибудь лучше, просто скажите мне, пока я не могу перестать работать. –

+0

У меня его нет, но я подозреваю, что это [эта ошибка] (https://code.google.com/p/android/issues/detail?id=212672). Я не предлагал, чтобы вы перестали работать, я предлагал удалить ваш «ответ» и оставить вопрос открытым. Поскольку совершенно очевидно, что ошибка в 'transformClassesWithInstantRunForDebug' исчезнет, ​​когда вы отключите InstantRun, ваш« ответ »не добавит никакого значения. – AndreKR

Смежные вопросы