kingfeng's Notes

Android Studio 下配置NDK开发环境

以前在eclipse下面配置过NDK开发环境,不经意间看到Android Studio 1.3 中有配置NDK的路径,就想着试试配一下NDK环境,感觉比在eclipse下面配置还要简单一些。

主要有以下几点:

build.gradle 中配置NDK节点

modulebuild.gradledefaultConfig节点下配置:

1
2
3
4
5
ndk {
moduleName "JniTest" //so文件名称
ldLibs "log", "z", "m"
abiFilters "armeabi", "armeabi-v7a", "x86" // 应用基于指令集 编译的种类
}

这个JniTest就是 打包生成的libJniTest.so相对应,同时也要和Activity中的 System.loadLibrary(“JniTest”); 名称保持一致;

如果build的时候一直报:android-ndk-r10\ndk-build.cmd'' finished with non-zero exit value 1,在配置ndk同级下添加:

1
2
3
sourceSets.main {
jni.srcDirs = []
}

构建成功之后把它删除,重新构建就好了。

生成**.h 头文件

通过javah 命令生成 org_kingfeng_ndkdemo_MainActivity.h 头文件;
这个命令写的时候需要注意,进入main目录下(cd src/main)进行操作。
ref:

1
2
·javah -d jni -classpath c:\Users\kingfeng\AppData\Local\Android\sdk\platforms
\android-16\android.jar;..\..\build\intermediates\classes\debug org_kingfeng_ndkdemo_MainActivity`

创建main.c 文件

注意一点:

1
2
3
4
5
JNIEXPORT jstring JNICALL Java_org_kingfeng_ndkdemo_MainActivity_getStringFromNative
(JNIEnv * env, jobject jObj){
LOGE("log string from ndk.");
return (*env)->NewStringUTF(env,"Hello From JNI!");
}

方法名称一定要注意。

配置NDK Location

Project Structure –>左侧SDK Location,右侧就可以配置Android NDK Location了;
配完后看一下项目local.properties中有没有配置ndk.dir(路径不要有空格以及中文字符)。

结果

demo下载地址

reference:
http://blog.csdn.net/sodino/article/details/41946607
http://stackoverflow.com/questions/28759505/execution-failed-for-task-appcompiledebugndk
http://www.open-open.com/lib/view/open1440421271716.html

您的支持将鼓励我继续创作