Android Studio + NDK - 导入现有的C++

7
我该如何同时将位于项目目录外的一些.h和.cpp文件包含在编译中,并在项目文件树中查看它们?对于Visual Studio和C++项目,您只需使用“添加现有项”,选择文件,就可以在十秒钟内完成。难道基于Android的开发不应该使开发人员的生活更轻松吗? :/ 我已经搜索了几个小时了,没有一个答案解决了这个问题。我无法相信,在所有使用带有NDK的Android Studio的人中,没有人使用过jni文件夹之外的C++代码...你知道怎么做吗?谢谢。

1
使用ndk总是很痛苦,但现在不再了。 - Hong Duan
你知道在jni文件夹内包含一个单独的文件的方法吗?http://stackoverflow.com/q/32818293/753575 - isabsent
1个回答

4
这是我所做的事情。首先安装最新的Android Studio 1.4(但我在第一个支持ndk的1.3预览版上工作)。 为了使用NDK,您需要切换到Gradle 2.5(Project Structure-> Project-> Gradle Version)。使用实验性gradle-plugin(在主要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 我的项目由静态库和动态库组成。不幸的是,这不受支持,现在您必须将其编译为一个动态库。不支持自定义makefiles。
这是棘手的部分,您需要将其放在model { }中。
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']
            }
        }
    }
}

如果您的源文件存放在其他位置,您可以更改路径 - 这是从我的项目结构中得出的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接