当你有
时android {
defaultConfig {
ndk {
moduleName "yourlib"
stl "stlport_static"
ldLibs "log", "z", "m"
cFlags "-I/some/include/dir/"
}
...
}
...
}
在build.gradle中然后Gradle将编译src / main / jni /中的文件,它将在build / ndk / debug / Android.mk中生成一个Android.mk。
但是,就我而言,我正在尝试编译一些针对OpenCV编译的C ++文件。
当我手动创建Android.mk文件并运行ndk-build命令时,我有这个工作。但我希望自动通过Gradle / Android Studio来实现。
手动执行此操作时,我会包含要链接的库。我在手动创建的Android.mk中使用以下行执行此操作:
include /path/to/the/opencv/directory/sdk/native/jni/OpenCV.mk
但是,在Android的Gradle插件中,我不确定如何在生成的Android.mk文件中添加此“include”指令。
有人能指出我正确的Gradle指令方向将此行添加到生成文件中吗?感谢。
答案 0 :(得分:8)
我发现构建过程会从./src/main/jni文件夹下面提取所有内容。所以,我已经将符号链接放在其他地方包含和src文件夹 - src文件将由构建过程枚举到.mk文件中,并且编译器将刷新inc文件。也许它有点hacky:
android {
defaultConfig {
ndk {
moduleName "yourlib"
cFlags "-std=c99 -I${project.buildDir}/../src/main/jni/inc"
}
...
}
...
}
我也有不同的cFlags,具体取决于调试版本。这似乎是有效的gradle,但不想用android-studio构建。它将使用gradlew命令构建:
android {
defaultConfig {
ndk {
moduleName "yourlib"
cFlags "-std=c99 -I${project.buildDir}/../src/main/jni/inc"
}
...
}
...
buildTypes {
release {
debuggable false
jniDebugBuild false
ndk {
moduleName "yourlib"
}
}
debug {
debuggable true
jniDebugBuild true
ndk {
moduleName "yourlib"
ldLibs "log"
cFlags "-g -D_DEBUG"
}
}
}
}
我希望它可以帮到你(android-studio 0.8.6)。