以前在eclipse下面配置过NDK开发环境,不经意间看到Android Studio 1.3 中有配置NDK的路径,就想着试试配一下NDK环境,感觉比在eclipse下面配置还要简单一些。
build.gradle 中配置NDK节点
在 module
中 build.gradle
的defaultConfig
节点下配置:
1 | ndk { |
这个JniTest就是 打包生成的libJniTest.so
相对应,同时也要和Activity中的 System.loadLibrary(“JniTest”); 名称保持一致;
如果build的时候一直报:android-ndk-r10\ndk-build.cmd'' finished with non-zero exit value 1
,在配置ndk同级下添加:1
2
3sourceSets.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
5JNIEXPORT 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