I want to use OpenCV library in my app with Android Studio. I followed instructions found here but I get error
Configuration with name 'default' not found
What can be wrong?
I use Android Studio 1.0 with gradle 2.2.1.
I want to use OpenCV library in my app with Android Studio. I followed instructions found here but I get error
Configuration with name 'default' not found
What can be wrong?
I use Android Studio 1.0 with gradle 2.2.1.
The below steps for using Android OpenCV sdk in Android Studio. This is a simplified version of this(1) SO answer.
Step (6) is since Android studio expects native libs in
app/src/main/jniLibs
instead of olderlibs
folder. For those new to Android OpenCV, don't miss below stepsstatic{ System.loadLibrary("opencv_java"); }
(Note: for OpenCV version 3 at this step you should instead load the libraryopencv_java3
.)OpenCV written is in C/C++. Java wrappers are
Integrating OpenCV v3.1.0 into Android Studio v1.4.1, instructions with additional detail and this-is-what-you-should-get type screenshots.
Most of the credit goes to Kiran, Kool, 1", and SteveLiles over at opencv.org for their explanations. I'm adding this answer because I believe that Android Studio's interface is now stable enough to work with on this type of integration stuff. Also I have to write these instructions anyway for our project.
Experienced A.S. developers will find some of this pedantic. This answer is targeted at people with limited experience in Android Studio.
Create a new Android Studio project using the project wizard (Menu:/File/New Project):
Blank Activity named MainActivity
You should have a cvtest1 directory where this project is stored. (the title bar of Android studio shows you where cvtest1 is when you open the project)
Verify that your app runs correctly. Try changing something like the "Hello World" text to confirm that the build/test cycle is OK for you. (I'm testing with an emulator of an API 19 device).
Download the OpenCV package for Android v3.1.0 and unzip it in some temporary directory somewhere. (Make sure it is the package specifically for Android and not just the OpenCV for Java package.) I'll call this directory "unzip-dir" Below unzip-dir you should have a sdk/native/libs directory with subdirectories that start with things like arm..., mips... and x86... (one for each type of "architecture" Android runs on)
From Android Studio import OpenCV into your project as a module: Menu:/File/New/Import_Module:
Click on next. You get a screen with three checkboxes and questions about jars, libraries and import options. All three should be checked. Click on Finish.
Android Studio starts to import the module and you are shown an import-summary.txt file that has a list of what was not imported (mostly javadoc files) and other pieces of information.
But you also get an error message saying failed to find target with hash string 'android-14'.... This happens because the build.gradle file in the OpenCV zip file you downloaded says to compile using android API version 14, which by default you don't have with Android Studio v1.4.1.
Open the project structure dialogue (Menu:/File/Project_Structure). Select the "app" module, click on the Dependencies tab and add :openCVLibrary310 as a Module Dependency. When you select Add/Module_Dependency it should appear in the list of modules you can add. It will now show up as a dependency but you will get a few more cannot-find-android-14 errors in the event log.
Look in the build.gradle file for your app module. There are multiple build.gradle files in an Android project. The one you want is in the cvtest1/app directory and from the project view it looks like build.gradle (Module: app). Note the values of these four fields:
Your project now has a cvtest1/OpenCVLibrary310 directory but it is not visible from the project view:
Use some other tool, such as any file manager, and go to this directory. You can also switch the project view from Android to Project Files and you can find this directory as shown in this screenshot:
Inside there is another build.gradle file (it's highlighted in the above screenshot). Update this file with the four values from step 6.
Resynch your project and then clean/rebuild it. (Menu:/Build/Clean_Project) It should clean and build without errors and you should see many references to :openCVLibrary310 in the 0:Messages screen.
At this point the module should appear in the project hierarchy as openCVLibrary310, just like app. (Note that in that little drop-down menu I switched back from Project View to Android View ). You should also see an additional build.gradle file under "Gradle Scripts" but I find the Android Studio interface a little bit glitchy and sometimes it does not do this right away. So try resynching, cleaning, even restarting Android Studio.
You should see the openCVLibrary310 module with all the OpenCV functions under java like in this screenshot:
Copy the {unzip-dir}/sdk/native/libs directory (and everything under it) to your Android project, to cvtest1/OpenCVLibrary310/src/main/, and then rename your copy from libs to jniLibs. You should now have a cvtest1/OpenCVLibrary310/src/main/jniLibs directory. Resynch your project and this directory should now appear in the project view under openCVLibrary310.
Go to the onCreate method of MainActivity.java and append this code:
Then run your application. You should see lines like this in the Android Monitor: (I don't know why that line with the error message is there)
Now try to actually use some openCV code. In the example below I copied a .jpg file to the cache directory of the cvtest1 application on the android emulator. The code below loads this image, runs the canny edge detection algorithm and then writes the results back to a .png file in the same directory.
Put this code just below the code from the previous step and alter it to match your own files/directories.
Run your application. Your emulator should create a black and white "edge" image. You can use the Android Device Monitor to retrieve the output or write an activity to show it.
The Gotchas:
This worked for me and was as easy as adding a gradle dependancy:
https://bintray.com/seesaa/maven/opencv#
https://github.com/seesaa/opencv-android
The one caveat being that I had to use a hardware debugging device as arm emulators were running too slow for me (as AVD Manager says they will), and, as described at the repo README, this version does not include x86 or x86_64 support.
It seems to build and the suggested test:
spits out a bunch of output that looks about right to me.
Anybody facing problemn while creating jniLibs cpp is shown ..just add ndk ..
You can also add this library into build.gradle
For everyone who felt they want to run away with all the steps and screen shots on the (great!) above answers, this worked for me with
android studio 2.2.1
:Android Studio
, clickFile->New-> Import Module
and navigate to\path_to_your_unzipped_file\OpenCV-android-sdk\sdk\java
and hit Ok, then accept all default dialogs.In the
gradle
file of yourapp
module, add this to the dependencies block:Where XYZ is the exact version you download, for example in my case: