2016-07-05 10 views
3

私はOpenCVプロジェクトをC++で作成し、Androidデバイスで実行したいと考えています。私は成功していないネイティブコードを実行するために私のアンドロイドプロジェクトをセットアップしようとしました。私は現在、このエラーが直面しています:AndroidスタジオでOpenCVネイティブコードを使用する

エラー:見つからない(23.0)のGradleのDSL方法:「コンパイル()」

を私は基盤としてのOpenCVでネイティブのAndroid開発のため、次のgithubのサンプルを使用:https://github.com/jlhonora/opencv-android-sample

updated project properties to look like this:

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

Imported {OpenCV_DIR}\sdk\java as a module and added it as a module dependency in the project structure settings

は、これまでのところ私は試してみて、適切にSyncEのためにGradleの取得するには、次の行っています

これは、OpenCVのサンプル・マスターの\ 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') 
} 

そして最後に、OpenCVのライブラリのbuild.gradle:

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') 
    } 
} 

誰でもこの問題を助けてくれ、opencvでネイティブアンドロイド開発を始めるには、どうもありがとう!

答えて

2

あなたの問題は、あなたのdepencienciesフラグから来るかもしれない:

compile project(':openCVLibrary300') 

あなたはgradle.0.7.0アルファでプロジェクトを定義し、おそらく あなたのOpenCVのGradleファイルはGradleの安定版リリース2.8または2.10からコンパイルされています。

のGradle 0.7.0

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

のGradle 2.10

apply plugin: 'com.android.library' 

ので、おそらく、あなたのOpenCVのGradleのファイルが正しく定義されていません。

2つのオプションがあります。

アプリをネイティブモードでデバッグする場合は、opencvのグラデルファイル を0.7.0に変更するか、コードをグラデーション2.10に変更してください。

+0

私はかなり新しいAndroidプログラミングです。あなたは私のgradleファイルを0.7.0に変更する方法を教えていただけますか?私は、 "classpath 'com.android.tools.build:gradle-experimental:07.0-beta1'という行は、プロジェクトとすべてのモジュールをコンパイルするために、gradleバージョン0.7.0が使用されていることを意味していました。 –

関連する問題