在android studio中使用NDK后添加模块依赖项 我正在创建一个AAR库,它包含C++中的OpenCV。 一旦我尝试创建模块并尝试将依赖项添加到应用程序中,该模块将无法“看到”,并给我一个错误

在android studio中使用NDK后添加模块依赖项 我正在创建一个AAR库,它包含C++中的OpenCV。 一旦我尝试创建模块并尝试将依赖项添加到应用程序中,该模块将无法“看到”,并给我一个错误,android,c++,opencv,android-ndk,Android,C++,Opencv,Android Ndk,我遵循了关于如何创建模块的教程,但我认为我缺少了一些特别的东西,我正在使用NDK和gradle 在项目的Build.gradle文件中,我使用了以下内容: buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle-experimental:0.9.1' } } allprojects {

我遵循了关于如何创建模块的教程,但我认为我缺少了一些特别的东西,我正在使用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'
}
我尝试从应用程序中调用模块中的某个活动,但它告诉我找不到包,并要求我为模块添加依赖项。 但我还是犯了同样的错误,我发现我犯了同样的错误

compile project(':mylib')
添加的次数与我尝试添加依赖项的次数相同


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

我也遇到过类似的问题,如果打开构建变体,您将看到一个模块列表。单击应用程序模块的“信息”按钮,您将看到从库到应用程序的连接。你能看到这个吗?还是只看到没有连接的应用程序模块?该应用程序与模块没有连接。我不知道这是否会有帮助,但我的应用程序都有调试和发布,而对于每个版本的模块,我都有一个调试和一个realease,其中没有一个是connectedIt,似乎你有相同的问题,我有。不幸的是,我没有解决方案,但我的解决办法是从lib模块中删除产品风格。嗨,Alex,谢谢你的回复。如果我使用的是原生opencv,我可以去掉产品的味道吗?你能帮我做一下build.gradle吗?如果我去掉opencv的味道,会怎么样?谢谢你应该看看这个:它们描述了如何链接你构建的库。