004androidStudio ndk开发环境android
在 local.properties 添加以下配置:android-studio
sdk.dir=path_of_android-sdk ndk.dir=path_of_android-ndk
android studio中有对ndk环境的设置:app
【File】->[Project Struct]->Android NDK Location
在如上位置设置ndk的安装位置。ide
参考以下:
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"gradle
defaultConfig { applicationId "com.frank.smart.smarthome" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" ndk { moduleName "SmartSocket" ldLibs "log", "z", "m" abiFilters "armeabi", "armeabi-v7a", "x86" } }
ndk还能够配置更多选项,以下:ui
ndk { moduleName "myEpicGameCode" cFlags "-DANDROID_NDK -D_DEBUG DNULL=0" // Define some macros ldLibs "EGL", "GLESv3", "dl", "log" // Link with these libraries! stl "stlport_shared" // Use shared stlport library }
默认状况下,你须要把C/C++源代码放在 [module]/src/main/jni/ 路径下。效果以下图所示:
固然,你也能够自定义源代码路径:.net
android { // .. android settings .. sourceSets.main { jni.srcDirs 'src/main/source' } }
这一步不是必须的,你能够根据须要,对各个平台进行不一样的编译配置,能够设置覆盖前面的编译选项(例如 cFlags )。例如你只想编译指定平台的.so,而不是全部的平台。以下:debug
android { // .. android settings .. productFlavors { x86 { ndk { abiFilter "x86" } } arm { ndk { abiFilter "armeabi-v7a" } } mips { ndk { abiFilter "mips" } } } } // android
android studio 根据Gradle配置自动生成Android.mk 位于app\build\intermediates\ndk\debug下
若是只有c/cpp文件,直接这样编译的话,会报错,这应该是android studio 在这种状况自动生成Android.mk 时的一个bug,见编译错误。code
com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'D:\android-ndk-r10\ndk-build.cmd'' finished with non-zero exit value 2blog
解决方法:
在jni文件下建一个空的empty.c文件 编译运行便可
若是还运行不了,在当前model的build.gradle下添加
android{ ………… sourceSets.main { jni.srcDirs = [] } }