在android studio中使用NDK后添加模块依赖

时间:2017-04-25 14:03:09

标签: android c++ opencv android-ndk

我正在创建一个要分发的AAR库,它包含C ++中的openCV。 一旦我尝试创建模块并尝试向应用程序添加依赖项,模块就无法“看到”并给我一个错误。

我按照关于如何创建模块的教程,但我想我特别想念我使用NDK和gradle实验。

在项目的Build.gradle文件中,我使用了以下内容:

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

allprojects {
    repositories {
        jcenter()
    }
}

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

在我的build.gradle(模块应用程序)中,我使用了以下

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

model {
    android {
        compileSdkVersion 25
        buildToolsVersion "25.0.1"

        defaultConfig.with {
            applicationId = "com.example.app"
            minSdkVersion.apiLevel = 21
            targetSdkVersion.apiLevel = 25
            versionCode 1
            versionName "1.0"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles.add(file('proguard-rules.pro'))
            }
        }
    }
}    

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:25.1.0'
    compile project(':mylib')
}

在模块中,我使用以下内容来使用OpenCV

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

model {
    android {
        compileSdkVersion = 25
        buildToolsVersion = "25.0.1"

        defaultConfig {
            minSdkVersion.apiLevel = 21
            targetSdkVersion.apiLevel = 25
            versionCode 1
            versionName "1.0"
        }

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

        ndk {

            moduleName = "myclib"
            cppFlags.addAll(["-std=c++11", "-fexceptions", "-frtti"])
            cppFlags.add("-I" + file("src/main/jni").absolutePath)
            ldLibs.addAll(["android", "EGL", "GLESv2", "dl", "log", "z"])
            stl = "gnustl_static"
        }

        productFlavors {
            create("arm") {
                ndk.with {
                    abiFilters.add("armeabi")
                    File curDir = file('./')
                    curDir = file(curDir.absolutePath)
                    String libsDir = curDir.absolutePath + "/src/main/jniLibs/armeabi/"
                    ldLibs.add(libsDir + "libopencv_java3.so")
                }
            }

            create("armv7") {
                ndk.with {
                    abiFilters.add("armeabi-v7a")
                    File curDir = file('./')
                    curDir = file(curDir.absolutePath)
                    String libsDir = curDir.absolutePath + "/src/main/jniLibs/armeabi-v7a/"
                    ldLibs.add(libsDir + "libopencv_java3.so")
                }
            }
            create("x86") {
                ndk.with {
                    abiFilters.add("x86")

                    File curDir = file('./')
                    curDir = file(curDir.absolutePath)
                    String libsDir = curDir.absolutePath + "/src/main/jniLibs/x86/"
                    ldLibs.add(libsDir + "libopencv_java3.so")
                }
            }  
             create("mips") {
               ndk.with {
               abiFilters.add("mips")

               File curDir = file('./')
               curDir = file(curDir.absolutePath)
               String libsDir = curDir.absolutePath + "/src/main/jniLibs/mips/"

                ldLibs.add(libsDir + "libopencv_java3.so")
            }
        }
        create("fat") {

        }
    }

}
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:25.1.0'
}

我尝试从应用程序调用模块中的活动,但它让我无法找到包并要求我为模块添加依赖项。 我做了那个仍然相同的错误,在build.gradle上我发现我有

compile project(':mylib')

在尝试添加依赖项时添加了多次。

我做错了什么以及如何解决这个问题

0 个答案:

没有答案