在Android Studio中使用NDK与外部C ++源代码

时间:2014-10-04 00:39:04

标签: android c++ android-ndk android-studio java-native-interface

到目前为止,我在使用NDK和Android Studio进行了尝试,我编写了Java Wrapper,生成了头文件,并在JNI文件夹中的相应c ++文件中填写了一些函数。

我现在要做的就是进行简单的构建,以便我可以验证一切正常。我的项目依赖于我整个android项目之外的一些c ++源文件。我是否会在Android中以某种方式构建这些源文件?我如何访问它们?我有什么需要从Gradle做的吗?

我建立跨多个来源的项目非常新,所以我不知道该怎么做。如果问题没有意义,请道歉。非常感谢任何帮助(:

1 个答案:

答案 0 :(得分:4)

http://ph0b.com/android-studio-gradle-and-ndk-integration/

用户ph0b在NDK上有很多SO帖子。

在subj(AS + NDK)上阅读此人的各种帖子

IMO - 您可以从用于eclipse / NDK安卓项目和AS 0.8的src目录中关注策略'import NDK proj'。+将通过正常的“文件/导入项目”对话框几乎可以获得所有方式。

完成AS导入后,NDK内容将位于:

<强> ./根/模块/ SRC /主/ JNI

Java包将在

<强> ./根/模块/ SRC /主/ JAVA

验证导入到AS 是否对您输入到导入过程的“Android.mk”文件执行自动更新,因为您将需要它而不是任何自动生成的文件来自AS。

在AS gradle.build文件中......

确保

buildToolsVersion“19.1.0”

并按照之前的链接添加以下内容:

   ndk {
        moduleName "audioboo-ogg"
    }
}
flavorDimensions "abi"
productFlavors {
    x86 {
        ndk {
            abiFilter "x86"
        }
    }
    armv7 {
        ndk {
            abiFilter "armeabi-v7a"
        }
    }
}
sourceSets {
    main {
        jni.srcDirs = [] /*disable automatic ndk-build call */
    }

}

task ndkBuild(type: Exec) {
    commandLine '$NDK_HOME/android-ndk-r9[a-z]/ndk-build', '-C', file('src/main/jni').absolutePath
}

tasks.withType(JavaCompile) {
    compileTask -> compileTask.dependsOn ndkBuild
}

然后您可以选择在jni文件夹中进行CLI NDK构建,或者只使用gradle集成构建,该构建将使用gradle文件中的“ndkBuild”任务。