如何在使用Gradle中使用opencv?


69

我想使用Android Studio使用Gradle构建工具开发应用程序。我无法在上插入OpenCV存储库和库build.gradle。我的.gradle文件如下:

buildscript {
    repositories {
        mavenCentral()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
}

dependencies {
    compile 'com.android.support:support-v4:13.0.+'
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 16
    }
}

如何在项目中添加OpenCV?

Answers:


133

您可以在Android Studio中轻松完成此操作。

请按照以下步骤将Open CV作为库添加到您的项目中。

  1. libraries在项目主目录下创建一个文件夹。例如,如果您的项目是OpenCVExamples,则将创建一个OpenCVExamples/libraries文件夹。

  2. 转到SDK“ \ OpenCV-2.4.8-android-sdk \ sdk”所在的位置,您将找到该java文件夹,并将其重命名为opencv

  3. 现在,将完整的opencv目录从SDK复制到您刚创建的库文件夹中。

  4. 现在build.gradleopencv目录中创建一个包含以下内容的文件

    apply plugin: 'android-library'
    
    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:0.9.+'
        }
    }
    
    android {
        compileSdkVersion 19
        buildToolsVersion "19.0.1"
    
        defaultConfig {
            minSdkVersion 8
            targetSdkVersion 19
            versionCode 2480
            versionName "2.4.8"
        }
    
        sourceSets {
            main {
                manifest.srcFile 'AndroidManifest.xml'
                java.srcDirs = ['src']
                resources.srcDirs = ['src']
                res.srcDirs = ['res']
                aidl.srcDirs = ['src']
            }
        }
    }
    
  5. 在应用程序的主目录中编辑settings.gradle文件,并添加以下行:

    include ':libraries:opencv'
    
  6. 与Gradle同步您的项目,看起来应该像这样

    屏幕1

  7. 右键单击项目,然后Open Module Settings从左侧列表中单击“选择模块”,再单击应用程序的模块,单击“依赖关系”选项卡,然后单击“ +”按钮添加新的模块依赖关系。

    在此处输入图片说明

  8. 选择Module dependency。它将打开一个对话框,其中列出了可供选择的模块;选择“:libraries:opencv”。

    在此处输入图片说明

  9. jniLibs在该/app/src/main/位置创建一个文件夹,然后jniLibs从OpenCV SDK中复制所有带有* .so文件(armeabi,armeabi-v7a,mips,x86)的文件夹。

    在此处输入图片说明

  10. 单击确定。现在一切都完成了,去享受OpenCV的乐趣。


17
“您可以在Android Studio中轻松完成此操作。” -是的,完全简单... :)但是,非常感谢,您的解决方案终于帮助我完成了这一工作。我想询问有关将文件复制到jniLibs目录中的问题。它复制了150兆字节的数据。这些都将包括在最终申请中吗?如果是,是否有必要?我的意思是可以包含opencv而不必使应用程序不必要地变大?
2014年

好的,所以手机中的应用程序最后大约只有40 MB,但是我遇到了一个问题,出现此错误:UnsatisfiedLinkError: Native method not found: org.opencv.features2d.FeatureDetector.create_0:(I)J。你知道是什么原因吗?
2014年

1
@Vinuthan:请确保您下载了OpenCV Android SDK,而不仅仅是OpenCV。您想要这里OpenCV for Android链接。听起来您可能抓错了一个。从OpenCV Android 2.4.9开始,我可以在中找到该文件夹。sdk/java/
user1978019 2014年

5
在步骤9中,我jniLibs在OpenCV SDK中看不到文件夹。经过一番寻找,我确实找到了带有* .so文件的文件夹,但它们位于此目录中:OpenCV-3.0.0-android-sdk-1\OpenCV-android-sdk\sdk\native\libs可能只是我使用的是OpenCV SDK的较新版本吗?
格雷格

2
@TGMCians在步骤6中,我收到此错误:错误:无法从project-path / libraries / AndroidManifest.xml读取packageName。是否应该进行修改?如何?
frank jorsn

25

根据OpenCV docs(1),使用OpenCV管理器的以下步骤是将OpenCV用于生产运行的推荐方法。但是,OpenCV manager(2)是Google Play商店的附加安装。因此,如果您希望使用自包含的apk(不使用OpenCV管理器)或当前处于开发/测试阶段,则建议在https://stackoverflow.com/a/27421494/1180117进行回答。

在带有OpenCV管理器的Android Studio中使用OpenCV的建议步骤。

  1. 解压缩从OpenCV.org下载的OpenCV Android SDK(3
  2. 从中File -> Import Module,选择sdk/java解压缩的opencv存档中的文件夹。
  3. 更新build.gradle项下的进口OpenCV的模块更新4场,以配合你的项目的build.gradle一个)compileSdkVersion B)buildToolsVersion C)的minSdkVersion和4)targetSdkVersion。
  4. 通过添加模块依赖性Application -> Module Settings,然后选择Dependencies选项卡。单击+底部(或右侧)的图标,选择Module Dependency并选择导入的OpenCV模块。

最后一步,在您的Activity类中,在下面添加代码段。

    public class SampleJava extends Activity  {

        private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
        @Override
        public void onManagerConnected(int status) {
            switch(status) {
                case LoaderCallbackInterface.SUCCESS:
                    Log.i(TAG,"OpenCV Manager Connected");
                    //from now onwards, you can use OpenCV API
                    Mat m = new Mat(5, 10, CvType.CV_8UC1, new Scalar(0));
                    break;
                case LoaderCallbackInterface.INIT_FAILED:
                    Log.i(TAG,"Init Failed");
                    break;
                case LoaderCallbackInterface.INSTALL_CANCELED:
                    Log.i(TAG,"Install Cancelled");
                    break;
                case LoaderCallbackInterface.INCOMPATIBLE_MANAGER_VERSION:
                    Log.i(TAG,"Incompatible Version");
                    break;
                case LoaderCallbackInterface.MARKET_ERROR:
                    Log.i(TAG,"Market Error");
                    break;
                default:
                    Log.i(TAG,"OpenCV Manager Install");
                    super.onManagerConnected(status);
                    break;
            }
        }
    };

    @Override
    protected void onResume() {
        super.onResume();
        //initialize OpenCV manager
        OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, this, mLoaderCallback);
    }
}

注意:仅当在onManagerConnectedmethod上收到成功回调后,才能进行OpenCV调用。在运行期间,系统会提示您从Play商店安装OpenCV管理器(如果尚未安装)。在开发过程中,如果您无权访问游戏商店或使用emualtor,请使用适当的OpenCV管理器apk(位于已apk下载的OpenCV sdk存档下的文件夹中)。

优点

  • Apk大小减少约40 MB(也考虑升级)。
  • OpenCV管理器会为您的硬件安装优化的二进制文件,这有助于提高速度。
  • 升级到OpenCV管理器可能会使您的应用程序免于OpenCV中的错误。
  • 不同的应用程序可以共享相同的OpenCV库。

缺点

  • 最终用户体验-可能不喜欢应用程序中的安装提示。

如何使用C ++将其与NDK和JNI一起使用?
Romantic Electron

@RomanticElectron我没有用ndk尝试过opencv。我想知道您使用ndk的opencv的特定功能。随着3.0的发布,用于opencv的Java包装器确实得到了改进。
基兰

我想使用笔划宽度变换算法进行文本检测,获取连接的组件并分离出字母以输入到神经网络@Kiran
Romantic Electron

我不知道include静态{System.loadLibrary(“ opencv_java”); }做(或放在哪里),但这是对这个问题的正确答案。谢谢!另外,您还需要修复另一个错误。请参阅: stackoverflow.com/questions/27470313/…–
戴夫·费舍尔

抱歉,您将静态通话放在哪里?
拉兹格里斯(Razgriz)

23

由于集成OpenCV是一项艰巨的工作,因此我们将其预先打包并通过JCenter在此处发布:https : //github.com/quickbirdstudios/opencv-android

只需将其包括在模块的build.gradle依赖项部分中

dependencies {
  implementation 'com.quickbirdstudios:opencv:3.4.1'
}

这在项目的build.gradle存储库部分中

repositories {
  jcenter()
}

gradle导入后,您将不会遇到皮棉错误,但不要忘记在MainActivity中像这样初始化OpenCV库

public class MainActivity extends Activity {
    static {
        if (!OpenCVLoader.initDebug())
            Log.d("ERROR", "Unable to load OpenCV");
        else
            Log.d("SUCCESS", "OpenCV loaded");
    }
...
...
...
...

1
谢谢!我真的不明白OpenCV没有正式提供这样的解决方案。
薇薇

@Malte我已经分叉了这个仓库,在Java文件中做了一些更改,并使用了来自仓库的jitpack发布。当我运行时,找不到openCV lib的说法。我该如何通过我的回购交易?
Balasubramanian

9

如果您不想使用JavaCV,则对我有效。

第1步-下载资源

http://opencv.org/downloads.html下载OpenCV Android SDK

第2步-将OpenCV二进制文件复制到您的APK

从以下位置复制libopencv_info.so和libopencv_java.so

OpenCV-2.?.?-android-sdk -> sdk -> native -> libs -> armeabi-v7a

Project Root -> Your Project -> lib - > armeabi-v7a

压缩lib文件夹,然后将该zip重命名为every-v7a.jar。

复制此.jar文件并将其放在您的项目中的此处

Project Root -> Your Project -> libs

将此行添加到您的项目build.gradle的“依赖项”部分中

compile files('libs/whatever-v7a.jar')

现在编译时,您可能会发现.apk大约大4mb。

(如果您也想支持ARMv6,请重复“ armeabi”,可能不再需要。)

第3步-将Java SDK添加到您的项目

从这里复制java文件夹

OpenCV-2.?.?-android-sdk -> sdk

Project Root -> Your Project -> libs (与您的.jar文件相同的位置);

(您可以将“ java”文件夹名称重命名为“ OpenCV”)

在这个新复制的文件夹中,添加一个典型的build.gradle文件。我用这个:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.6.+'
    }
}

apply plugin: 'android-library'

repositories {
    mavenCentral();
}

android {
    compileSdkVersion 19
    buildToolsVersion "19"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 19
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }
    }
}

在您的项目根目录settings.gradle文件中进行更改,它看起来也像这样:

include ':Project Name:libs:OpenCV', ':Project Name'

在依赖项部分的项目根目录->项目名称-> build.gradle文件中,添加以下行:

compile project(':Project Name:libs:OpenCV')

第4步-在项目中使用OpenCV

进行重建,您应该可以在项目中导入并开始使用OpenCV。

import org.opencv.android.OpenCVLoader;
...
if (!OpenCVLoader.initDebug()) {}

我知道这是否有点破解,但我认为我还是会发布它。


这工作到一定程度,但是我无法将OpenCV类导入到我的项目中。我可以导入org.opencv-可以识别,但是如果我尝试导入eg org.opencv.android.OpenCVLoaderandroid则用红色下划线标记,就像我尝试导入的任何其他类一样。可能出什么问题了?
fredley 2014年

您确定在步骤1中从OpenCV.org下载了“ Android的OpenCV”吗?如果是这样,听起来好像在步骤3中出了点问题。希望能对您
有所

我确实做到了,是的,我认为问题不在于重建,现在已经解决。
fredley 2014年

很高兴听到汤姆!顺便说一句-从Android Studio 0.4.2开始,我认为他们支持NDK,我想尽快检查一下,这可能会导致APK尺寸变小。
Paito

我按照您的步骤进行操作,但我得到:无法加载opencv_java:findLibrary返回null。我从头开始跟踪他们两次,结果相同。使用Android Studio 0.5.1。我可以从main调用initDebug,但是似乎找不到底层库?有什么想法吗?谢谢!
albertpeiro 2014年

7
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
    maven {
        url 'http://maven2.javacv.googlecode.com/git/'
    }
}

dependencies {
    compile 'com.android.support:support-v4:13.0.+'
    compile 'com.googlecode.javacv:javacv:0.5'
    instrumentTestCompile 'junit:junit:4.4'
}

android {
    compileSdkVersion 14
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 14
    }
}

这对我有用:)


2
这是用于javacv(opencv包装器)的,现在它已更改为“ org.bytedeco:javacv:<version>”
Avinash R

添加完以上项目后,我得到了'java.lang.UnsatisfiedLinkError:无法从加载程序dalvik.system.PathClassLoader加载opencv_core'异常。知道缺少什么吗?(为记录起见,我添加了“ complie org.bytedeco.javacv:0.9+”)
Hegi


7

我发布了一篇有关如何使用Android Studio和Gradle使用OpenCV构建Android NDK应用程序的新文章。在这里可以看到更多信息,我总结了两种方法:

(1)ndk-build在Gradle任务中运行

sourceSets.main.jni.srcDirs = []

task ndkBuild(type: Exec, description: 'Compile JNI source via NDK') {
    ndkDir = project.plugins.findPlugin('com.android.application').getNdkFolder()
    commandLine "$ndkDir/ndk-build",
            'NDK_PROJECT_PATH=build/intermediates/ndk',
            'NDK_LIBS_OUT=src/main/jniLibs',
            'APP_BUILD_SCRIPT=src/main/jni/Android.mk',
            'NDK_APPLICATION_MK=src/main/jni/Application.mk'
}

tasks.withType(JavaCompile) {
    compileTask -> compileTask.dependsOn ndkBuild
}

(2)ndk-build用外部工具运行

参数: NDK_PROJECT_PATH=$ModuleFileDir$/build/intermediates/ndk NDK_LIBS_OUT=$ModuleFileDir$/src/main/jniLibs NDK_APPLICATION_MK=$ModuleFileDir$/src/main/jni/Application.mk APP_BUILD_SCRIPT=$ModuleFileDir$/src/main/jni/Android.mk V=1

更多信息可以在这里看到


5

它也适用于Android Studio 1.2 + OpenCV-2.4.11-android-sdk(.zip)。

只需执行以下操作:

1)遵循以“您可以在Android Studio中非常轻松地完成此操作。请按照以下步骤将OpenCV作为库添加到项目中”的答案。由TGMCians。

2)在<yourAppDir>\libraries\opencv新创建的文件夹中进行修改build.gradle(TGMCians的答案中的第4步,适用于OpenCV2.4.11-android-sdk并使用gradle 1.1.0):

apply plugin: 'android-library'

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.1.0'
    }
}

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 21
        versionCode 2411
        versionName "2.4.11"
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            res.srcDirs = ['res']
            aidl.srcDirs = ['src']
        }
    }
}

3)位于目录中的* .so文件"armeabi", "armeabi-v7a", "mips", "x86"可在(默认OpenCV位置)下找到:..\OpenCV-2.4.11-android-sdk\OpenCV-android-sdk\sdk\native\libs(TGMCians答案中的第9步)。

享受,如果有帮助,请给我一个良好的声誉。我需要50才能直接回答答案(还剩19个):)


3

这些是在Android Studio 1.2中使用OpenCV的必要步骤:

  • 下载OpenCV并解压缩存档
  • 在Android Studio中打开您的应用程序项目
  • 转到文件->新建->导入模块...
  • sdk/java在您之前提取的目录中选择
  • 模块名称设置为opencv
  • 下一步然后完成
  • 在导入的OpenCV模块下打开build.gradle并更新compileSdkVersion并更新buildToolsVersion到您计算机上的版本
  • 添加compile project(':opencv')到您的应用程序build.gradle

    dependencies {
        ...
        compile project(':opencv')
    }
    
  • Gradle文件同步项目


3

OpenCV Android SDK包含一个示例gradle.build文件,其中包含有用的注释:https : //github.com/opencv/opencv/blob/master/modules/java/android_sdk/build.gradle.in

//
// Notes about integration OpenCV into existed Android Studio application project are below (application 'app' module should exist).
//
// This file is located in <OpenCV-android-sdk>/sdk directory (near 'etc', 'java', 'native' subdirectories)
//
// Add module into Android Studio application project:
//
// - Android Studio way:
//   (will copy almost all OpenCV Android SDK into your project, ~200Mb)
//
//   Import module: Menu -> "File" -> "New" -> "Module" -> "Import Gradle project":
//   Source directory: select this "sdk" directory
//   Module name: ":opencv"
//
// - or attach library module from OpenCV Android SDK
//   (without copying into application project directory, allow to share the same module between projects)
//
//   Edit "settings.gradle" and add these lines:
//
//   def opencvsdk='<path_to_opencv_android_sdk_rootdir>'
//   // You can put declaration above into gradle.properties file instead (including file in HOME directory),
//   // but without 'def' and apostrophe symbols ('): opencvsdk=<path_to_opencv_android_sdk_rootdir>
//   include ':opencv'
//   project(':opencv').projectDir = new File(opencvsdk + '/sdk')
//
//
//
// Add dependency into application module:
//
// - Android Studio way:
//   "Open Module Settings" (F4) -> "Dependencies" tab
//
// - or add "project(':opencv')" dependency into app/build.gradle:
//
//   dependencies {
//       implementation fileTree(dir: 'libs', include: ['*.jar'])
//       ...
//       implementation project(':opencv')
//   }
//
//
//
// Load OpenCV native library before using:
//
// - avoid using of "OpenCVLoader.initAsync()" approach - it is deprecated
//   It may load library with different version (from OpenCV Android Manager, which is installed separatelly on device)
//
// - use "System.loadLibrary("opencv_java3")" or "OpenCVLoader.initDebug()"
//   TODO: Add accurate API to load OpenCV native library
//
//
//
// Native C++ support (necessary to use OpenCV in native code of application only):
//
// - Use find_package() in app/CMakeLists.txt:
//
//   find_package(OpenCV 3.4 REQUIRED java)
//   ...
//   target_link_libraries(native-lib ${OpenCV_LIBRARIES})
//
// - Add "OpenCV_DIR" and enable C++ exceptions/RTTI support via app/build.gradle
//   Documentation about CMake options: https://developer.android.com/ndk/guides/cmake.html
//
//   defaultConfig {
//       ...
//       externalNativeBuild {
//           cmake {
//               cppFlags "-std=c++11 -frtti -fexceptions"
//               arguments "-DOpenCV_DIR=" + opencvsdk + "/sdk/native/jni" // , "-DANDROID_ARM_NEON=TRUE"
//           }
//       }
//   }
//
// - (optional) Limit/filter ABIs to build ('android' scope of 'app/build.gradle'):
//   Useful information: https://developer.android.com/studio/build/gradle-tips.html (Configure separate APKs per ABI)
//
//   splits {
//       abi {
//           enable true
//           reset()
//           include 'armeabi-v7a' // , 'x86', 'x86_64', 'arm64-v8a'
//           universalApk false
//       }
//   }
//

apply plugin: 'com.android.library'

println "OpenCV: " + project.buildscript.sourceFile

android {
    compileSdkVersion 27
    //buildToolsVersion "27.0.3" // not needed since com.android.tools.build:gradle:3.0.0

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 21
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_6
        targetCompatibility JavaVersion.VERSION_1_6
    }

    sourceSets {
        main {
            jniLibs.srcDirs = ['native/libs']
            java.srcDirs = ['java/src']
            aidl.srcDirs = ['java/src']
            res.srcDirs = ['java/res']
            manifest.srcFile 'java/AndroidManifest.xml'
        }
    }
}

dependencies {
}


1

AndroidManifest.xml文件中必须具有以下权限和功能,否则,您将获得以下对话框

“您的设备似乎不支持相机(或它已被锁定)。应用程序将关闭”

  <uses-permission android:name="android.permission.CAMERA"/>

    <uses-feature android:name="android.hardware.camera" android:required="false"/>
    <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
    <uses-feature android:name="android.hardware.camera.front" android:required="false"/>
    <uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/>

0

OpenCV,Android Studio 1.4.1,gradle-experimental插件0.2.1

其他答案都没有帮助我。这对我有用。我使用的是opencv的tutorial-1示例,但我将在项目中使用NDK,因此我使用的gradle-experimental插件的结构与gradle插件不同。

应该安装Android Studio,通过Android SDK Manager安装Android NDK,并下载并解压缩OpenCV Android SDK

这是bash脚本的一部分,以使其紧凑而完整。这也全在命令行上,因为我遇到的一个大问题是随着IDE的发展,in-IDE指令已经过时了。

首先设置OpenCV SDK根目录的位置。

export OPENCV_SDK=/home/user/wip/OpenCV-2.4.11-android-sdk
cd $OPENCV_SDK

创建您的gradle构建文件...

首先是OpenCV库

cat > $OPENCV_SDK/sdk/java/build.gradle <<'==='


apply plugin: 'com.android.model.library'
model {
    android {
        compileSdkVersion = 23
        buildToolsVersion = "23.0.2"

        defaultConfig.with {
            minSdkVersion.apiLevel = 8
            targetSdkVersion.apiLevel = 23
        }
    }

    android.buildTypes {
        release {
            minifyEnabled = false
        }
        debug{
            minifyEnabled = false
        }
    }
   android.sources {
       main.manifest.source.srcDirs +=  "."
       main.res.source.srcDirs +=  "res"
       main.aidl.source.srcDirs +=  "src"
       main.java.source.srcDirs +=  "src"
   }

}


===

然后告诉教程示例将库标记为什么以及在何处找到它。

cat > $OPENCV_SDK/samples/tutorial-1-camerapreview/settings.gradle <<'==='


include ':openCVLibrary2411'
project(':openCVLibrary2411').projectDir = new File('../../sdk/java')


===

为教程创建构建文件。

cat > $OPENCV_SDK/samples/tutorial-1-camerapreview/build.gradle <<'==='


buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle-experimental:0.2.1'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

apply plugin: 'com.android.model.application'

model {
    android {
        compileSdkVersion = 23
        buildToolsVersion = "23.0.2"

        defaultConfig.with {
            applicationId = "org.opencv.samples.tutorial1"
            minSdkVersion.apiLevel = 8
            targetSdkVersion.apiLevel = 23
        }
    }

    android.sources {
       main.manifest.source.srcDirs +=  "."
       main.res.source.srcDirs +=  "res"
       main.aidl.source.srcDirs +=  "src"
       main.java.source.srcDirs +=  "src"
    } 

    android.buildTypes {
        release {
            minifyEnabled = false
            proguardFiles += file('proguard-rules.pro')
        }
        debug {
             minifyEnabled = false
        }
    }
}

dependencies {
    compile project(':openCVLibrary2411')
}


===

您的构建工具版本需要正确设置。这是查看已安装内容的简便方法。(您可以通过Android SDK Manager安装其他版本)。如果您没有23.0.2,请更改buildToolsVersion。

echo "Your buildToolsVersion is one of: "
ls $ANDROID_HOME/build-tools

将第一行的环境变量更改为您的版本号

REP=23.0.2 #CHANGE ME
sed -i.bak s/23\.0\.2/${REP}/g $OPENCV_SDK/sdk/java/build.gradle
sed -i.bak s/23\.0\.2/${REP}/g $OPENCV_SDK/samples/tutorial-1-camerapreview/build.gradle

最后,设置正确的gradle包装器。Gradle需要一个干净的目录来执行此操作。

pushd $(mktemp -d)

gradle wrapper --gradle-version 2.5

mv -f gradle* $OPENCV_SDK/samples/tutorial-1-camerapreview
popd

现在您应该已经准备就绪。现在,您可以使用Android Studio浏览到此目录并打开项目。

使用以下命令在命令行上构建教程:

./gradlew assembleDebug

它应该构建您的apk,并将其放入./build/outputs/apk

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.