我正在创建一个要分发的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')
在尝试添加依赖项时添加了多次。
我做错了什么以及如何解决这个问题