Android NDK开发入门
Android NDK开发入门
Android NDK是基于JNI技术的。本来想把这些文章写道Java JNI中去,考虑到自己使用的是android平台,还是放到这里来了。最近研读The Java Native Interface ,我得到的知识都是从这里面来的。书写的非常好,思路清晰,语言简洁明了,向大家推荐。
从最简单的开始:
(一):Java 调用native 方法。
- public class JNITestActivity extends Activity {
- TextView textView;
- public native String getText();//声明native 方法
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- textView = (TextView)findViewById(R.id.textView);
- String myString = getText();//调用native方法
- textView.setText(myString);
- }
- static {
- System.loadLibrary("mylib"); //导入链接库
- }
- }
使用native方法需要预先声明,与普通函数的区别就是多了native关键字。javah利用它来生成相应的头文件。
在android 的NDK开发中我不建议使用javah工具生成头文件。理由是javah生成的头文件与我们需要的函数名相差比较大。在工程下新建jni目录存放C与C++文件。新建源文件source.c
- #include <string.h>
- #include <stdio.h>
- #include <jni.h>
- jstring
- Java_com_xp_JNITestActivity_getText (JNIEnv* env, jobject obj)
- {
- return (*env)->NewStringUTF(env, "Test Android NDK!");
- }
- LOCAL_PATH := $(call my-dir)
- include $(CLEAR_VARS)
- LOCAL_MODULE := mylib
- LOCAL_SRC_FILES := source.c
- include $(BUILD_SHARED_LIBRARY)
下面进入cygwin cd到工程目录下执行ndk-build。它会生成libmylib.o文件
注意:在java 中我们导入的是mylib。
- System.loadLibrary("mylib");
然后开始编译运行,下面是结果:
|
【内容导航】 | |
第1页:方法的调用与返回 | 第2页:基本类型的传递与返回 |
第3页:访问Java中的域 |
评论暂时关闭