【问题标题】:Android Studio + NDK - Import Existing C++Android Studio + NDK - 导入现有 C++
【发布时间】:2015-09-21 13:15:59
【问题描述】:
如何包含在编译中和在项目文件树中查看一些.h和.cpp文件位于项目目录之外 ?
使用 Visual Studio 和 C++ 项目,您只需使用“添加现有项目”,选择您的文件并瞧瞧,它只需十秒钟即可工作。基于 Android 的开发不应该让开发者的生活更轻松吗? :/
我一直在寻找几个小时现在如何做到这一点。我找到的答案都没有解决这个问题。
我不敢相信,在所有使用带有 NDK 的 Android Studio 的人中,没有一个人在 jni 文件夹之外使用过 C++ 代码...
你知道怎么做吗?谢谢。
【问题讨论】:
标签:
android
c++
android-studio
android-ndk
java-native-interface
【解决方案1】:
这就是我所做的。首先安装今天发布的最新的 Android Studio 1.4(但我在第一个 1.3 预览版中使用了 ndk 支持)。
要获得 NDK 支持,您需要切换到 Gradle 2.5(项目结构 -> 项目 -> Gradle 版本)。使用 experimental gradle-plugin(在 main build.gradle "classpath 'com.android.tools.build:gradle-experimental:0.2.0'" 中)。
然后您需要将您的应用程序 build.gradle 文件更新为新格式,如下所述:http://tools.android.com/tech-docs/new-build-system/gradle-experimental
我的项目由静态库和动态库组成。不幸的是,这不受支持,您现在必须将其编译为一个动态库。不支持自定义 makefile。
这是棘手的部分,你需要把它放在模型{}中
android.ndk {
moduleName = "NativeLib"
// toolchain = "clang" <- tried using it, but failed
// toolchainVersion = "3.5"
stl = "gnustl_static" // you can switch stl lib this way
ldLibs += "log"
cppFlags += "-g"
cppFlags += "-std=c++11" // use c++11
cppFlags += "-Wall"
cppFlags += "-I${file("../../../common/include")}".toString() // include folder
}
android.sources {
main {
jni {
source {
srcDirs = ['src/main/jni', '../../../common']
}
}
}
}
如果您的本地源文件位于其他地方,您可以更改路径 - 这是来自我的项目结构。