在android studio中使用NDK后添加模块依赖项 我正在创建一个AAR库,它包含C++中的OpenCV。 一旦我尝试创建模块并尝试将依赖项添加到应用程序中,该模块将无法“看到”,并给我一个错误
我遵循了关于如何创建模块的教程,但我认为我缺少了一些特别的东西,我正在使用NDK和gradle 在项目的Build.gradle文件中,我使用了以下内容:在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 {
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的味道,会怎么样?谢谢你应该看看这个:它们描述了如何链接你构建的库。