此文章主要讲解如何在Android Studio中设置NDK,这里就不跟大家解释什么是NDK了,想知道NDK的相关知识的可以先到这个网站上查阅,上面有对NDK相关的一些知识点以及如何在Eclipse上设置NDK有详细的解释,下面给出地址:https://developer.android.com/ndk/guides/index.html (此网站需要翻墙查阅)
下面给出具体步骤:
1.新建一个Android工程;
2.点击工具栏中的SDK Manager,在SDK Tools中勾选LLDB与NDK工具,点击OK或Apply进行下载,下载完成后即可执行下一步。
2.在你的工程中创建一个与MainActivity同级的类,这里叫NdkString,新建Native方法:
public static native String getFromC();3.创建完成后,点击Build->Make Project编译一遍,编译完成后,会在app\build\intermediates\classes\debug路径下生成对应的class文件,若没有生成,请重新编译一遍,或者点击Build->Clean Project,再点击Rebuild Profect,生成class文件。
4.点击在Android Studio的左下角的Terminal,这里的Terminal路径已经在你创建的工程路径下,所以你只需输入cd app\src\main即可,在使用CMD命令时需定义到C:\Users\BadGuy\Desktop\NdkTest\app\src\main 这里。然后执行javah -d jni -classpath ..\..\build\intermediates\classes\debug com.example.badguy.ndktest.NdkString这个命令。(这里应该还有其他写法,在下方的给出链接中你会看到其他写法,就不详细介绍了。 )
5.执行完命令后,在你的src\main路径下会多出一个jni文件夹并且在文件夹中有com_example_badguy_ndktest_NdkString.h这个头文件。在jni文件目录下创建一个Hello.c文件(可以new File来创建,记住要加.c后缀;也可以new C++ Source File),在Hello.c中实现头文件中的方法,这里不要忘记通过#Include引入头文件。这里实现的方法只返回了一个JAVA层的字符串。
#include "com_example_badguy_ndktest_NdkString.h" JNIEXPORT jstring JNICALL Java_com_example_badguy_ndktest_NdkString_getFromC (JNIEnv * env, jclass jclass){ return (*env)->NewStringUTF(env,"From C"); }
6.在gradle.properties文件末尾添加如下代码,并编译。
android.useDeprecatedNdk=true
7.编译完成后,在ndk\debug\lib下有各种平台的so文件,,我们可以回到一开始新建的NdkString类中,添加如下代码:
8.最后,在MainActivity中调用NdkString.getFromC()方法即可:static { System.loadLibrary("app"); //你的包名 }
btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { btn.setText(NdkString.getFromC()); } });
参阅资料:
http://www.imooc.com/learn/650
http://www.jianshu.com/p/d695020dc08c
http://blog.csdn.net/u012532559/article/details/51078362
https://zhidao.baidu.com/question/748278566116523732.html