AndroidStudio玩JNI,比在eclipse简单十倍左右。不需要那些繁琐的配置。NDK也可以直接下到
一、建项目
相比平时建项目,多勾选一个,如图:
代表包含 C++支持。一路next下去,到最后一步,会有个比平时多一个步骤如图,选择C++11:
二、观察项目下载插件 NDK,CMake:
clean项目。
三、写C++代码,当然,我们Android开发对C不熟悉,但写个helloWorld还是能办到的,c代码在:
#include <jni.h>
#include <string>
extern "C"
jstring
Java_com_example_administrator_myapplication_MainActivity_stringFromJNI(
JNIEnv* env,
jobject /* this */) {
std::string hello = "HelloWorld from C++";
int i = 2;
return env->NewStringUTF(hello.c_str());
}
extern "C"
jint
Java_com_example_administrator_myapplication_MainActivity_getNum(
JNIEnv* env,
jobject jobject1){
int i = 2;
int t = 3;
int k = i+t;
return k;
}
至于语法,为什么是jstring,而不是string,JNIEnv又是什么,为什么是 关键词extern ,jni.h又是什么东西?还有那jobject 又是什么?为什么 jstring和 jint return的方式不相同?有好多的疑问,我也不知道,一步步慢慢了解吧,毕竟是初夜,不要有太多的姿势。
三、写java代码中调用。
public native String stringFromJNI(); public native int getNum(); static { System.loadLibrary("native-lib"); }
主要就是这几句, System.loadLibrary("native-lib") 它是你C文件名。然后
public native String stringFromJNI();不用你去实现它。写好关键词 native。好了,现在可以运行demo了。@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Example of a call to a native method TextView tv = (TextView) findViewById(R.id.sample_text); tv.setText(stringFromJNI()+getNum()); }
如果想知道,怎么制作so文件,然后在别的项目中怎么调用,看下一篇吧。
附上代码:点击下载
本文介绍了在Android Studio中使用JNI(Java Native Interface)的简单过程,相较于Eclipse,Android Studio使得配置JNI变得更为简便。通过新建包含C++支持的项目,选择C++11标准,并下载NDK和CMake插件,开发者可以快速入门。接着,文章展示了编写C++ HelloWorld代码和在Java中调用这些本地方法的步骤。
1038

被折叠的 条评论
为什么被折叠?



