Использование собственного кода OpenCV в Android Studio

Я создал проект OpenCV на C ++ и хотел бы запустить его на устройстве Android. Я попытался настроить мой проект Android для запуска нативный код безуспешно. В настоящее время я сталкиваюсь с этой ошибкой:

Ошибка: (23,0) метод Gradle DSL не найден: ‘compile ()’

Я использовал следующий пример github для разработки под Android с использованием opencv в качестве основы: https://github.com/jlhonora/opencv-android-sample

До сих пор я сделал следующее, чтобы попытаться настроить синхронизацию правильно:

обновлены свойства проекта, чтобы они выглядели так:

ndk.dir=C\:\\Android\\sdk\\ndk-bundle
sdk.dir=C\:\\Android\\sdk
opencv.dir=C\:\\Android\\OpenCV-android-sdk

Импортировал {OpenCV_DIR} \ sdk \ java как модуль и добавил его как зависимость модуля в настройках структуры проекта

Это opencv-sample-master \ build.gradle:

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

}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}

dependencies {
compile project(':OpenCVLib')
}

Вот build.gradle проекта:

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

model {
android {
compileSdkVersion = 23
buildToolsVersion = "23.0.2"
defaultConfig.with {
applicationId = "org.honorato.opencvsample"minSdkVersion.apiLevel = 15
targetSdkVersion.apiLevel = 23
versionCode = 1
versionName = "1.0"}

ndk {
moduleName = "native"cppFlags.add("-I${file(getOpenCVDir())}".toString())
cppFlags.add("-frtti")
cppFlags.add("-fexceptions")
ldLibs.addAll(["log", "opencv_java3"])
stl    = "gnustl_static"}
}

android.buildTypes {
release {
// minifyEnabled = false
// proguardFiles = getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}

android.productFlavors {
// for detailed abiFilter descriptions, refer to "Supported ABIs" @
// https://developer.android.com/ndk/guides/abis.html#sa
create("arm") {
ndk.abiFilters.add("armeabi")
ndk.ldFlags.add("-L${file('src/main/jniLibs/armeabi')}".toString())
}
create("arm7") {
ndk.abiFilters.add("armeabi-v7a")
ndk.ldFlags.add("-L${file('src/main/jniLibs/armeabi-v7a')}".toString())
}
create("arm8") {
ndk.abiFilters.add("arm64-v8a")
ndk.ldFlags.add("-L${file('src/main/jniLibs/arm64-v8a')}".toString())
}
}
}

def getOpenCVDir() {
Properties properties = new Properties()
properties.load(new File(rootDir.absolutePath +     "/local.properties").newDataInputStream())
def externalModuleDir = properties.getProperty('opencv.dir', null)
if (externalModuleDir == null) {
throw new GradleException(
"OpenCV location not found. Define location with opencv.dir in the local.properties file!")
}
return externalModuleDir
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.1.1'
compile project(':openCVLibrary300')
}

И, наконец, build.gradle библиотеки opencv:

apply plugin: 'com.android.library'

dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':{DIR}:workspace:appcompat_v7')
}

android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}

// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')

// Move the build types to build-types/<type>
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
}

Если кто-нибудь может помочь мне с этой проблемой и с чего начать разработку нативного android с opencv, я был бы очень признателен!

3

Решение

Ваша проблема может исходить из вашего флага зависимостей:

 compile project(':openCVLibrary300')

Как вы определили свой проект с Gradle.0.7.0 альфа и, вероятно,
Ваши файлы grac для opencv скомпилированы из стабильной версии 2.8 или 2.10.

Gradle 0.7.0

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

Gradle 2.10

apply plugin: 'com.android.library'

Так что, вероятно, ваш файл Grac OpenCV не определен правильно.

Итак, у вас есть два варианта.

Если вы собираетесь отлаживать свое приложение в основном режиме, измените файлы OpenCV Gradle.
до 0.7.0 или измените свой код на gradle 2.10.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]