2016-09-29 18 views
7

Tôi đang làm việc trong một dự án Android với Android Studio 2.2 sử dụng thư viện OpenCV 3.1.0. Tôi đã nhập thư viện theo số answer này. Tình huống như sau:ClassNotFoundException: android.hardware.camera2.CameraAccessException với OpenCV 3.1.0

  • Khi tôi biên dịch dự án cho thiết bị có API> = 21 (chính xác API 23), mọi thứ diễn ra tốt đẹp.
  • Khi tôi lập dự án cho một thiết bị với API < 21 (chính xác API 19, API tối thiểu mà tôi muốn hỗ trợ), tôi nhận được lỗi biên dịch sau đây:

Gradle đăng nhập

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

tôi tìm thấy những câu hỏi tương tự:

Trong cả hai giải pháp là để thiết lập compileSdkVersion để tối thiểu 21 (phiên bản nơi camera2 API được giới thiệu) và chắc chắn rằng build.gradle file của dự án và phù hợp với OpenCV.

Thật không may, nó không hoạt động đối với tôi. Tôi vẫn gặp lỗi tương tự. Bất kỳ ý tưởng?

Mã của tôi có sẵn tại đây: Github repository.

Cảm ơn sự giúp đỡ của bạn!

+0

Tại sao bạn muốn đặt CompileSdk thành Trạng thái cũ như vậy? Đặt nó thành 24 và kể từ khi bạn có một MinSdk của 9 thiết bị cũ vẫn sẽ được hỗ trợ (nhưng bạn cần phải chắc chắn về thời gian chạy mà bạn không gọi bất kỳ api camera2) – GoneUp

+1

'compileSdkVersion' trong cả hai tệp' build.gradle' là 24. Tôi muốn hỗ trợ từ API 19 (KitKat). Trong cam kết cuối cùng tôi đã thay đổi 'minSdkVersion' từ 19 đến 9 chỉ để thử (vì OpenCV được cho là hỗ trợ từ API 8, nhưng với' appcompat-v7: 24.2.1' API tối thiểu là 9). Nhưng không có gì thay đổi. –

+0

Có thể trùng lặp với [Lỗi: gói android.hardware.camera2 không tồn tại OpenCV] (http://stackoverflow.com/questions/36204781/error-package-android-hardware-camera2-does-not-exist-opencv) –

Trả lời

6

Cuối cùng, tôi đã tìm thấy giải pháp thời gian nhờ @ JavierMollá.

Tắt Chạy tức thì giải quyết được sự cố. Truy cập File > Settings > Build, Execution, Deployment > InstantRun và bỏ chọn Enable Instant Run to hot swap code....

Disable instant run

Run tức thì là một tính năng chính của Android Studio, nhưng tiếc là có vẻ như nó vẫn đang làm việc theo tiến độ ... Như @AndreKR gợi ý, nó có thể liên quan với vấn đề này #212672.

+0

Vì vậy, đã xảy ra lỗi trong quá trình chuẩn bị Chạy tức thì và khi bạn tắt Instant Run, lỗi sẽ biến mất. Whoa! Sự ngạc nhiên! -1 cho một giải pháp không. – AndreKR

+0

@AndreKR Cảm ơn bạn đã giải pháp tốt hơn. Nếu bạn đọc câu trả lời của tôi, bạn có thể thấy "giải pháp thời gian", nếu bạn tìm thấy bất cứ điều gì tốt hơn chỉ cho tôi biết, trong khi đó tôi không thể ngừng làm việc. –

+0

Tôi không có, nhưng tôi nghi ngờ đó là [lỗi này] (https://code.google.com/p/android/issues/detail?id=212672). Tôi đã không gợi ý rằng bạn ngừng làm việc, tôi đã gợi ý rằng bạn xóa "câu trả lời" của bạn và để câu hỏi mở trong thời gian này. Vì nó khá rõ ràng rằng một lỗi trong 'transformClassesWithInstantRunForDebug' sẽ biến mất khi bạn tắt InstantRun," câu trả lời "của bạn không thêm bất kỳ giá trị nào. – AndreKR

Các vấn đề liên quan