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 = [] } }