标签:android style blog http color os 使用 java ar
参考资料:
Android平台上的JNI技术介绍
http://blog.csdn.net/thinkinwm/article/details/18700807
E:\android-ndk-r9\samples\hello-jni
HelloJni的Java代码如下:
package com.example.hellojni; import android.app.Activity; import android.widget.TextView; import android.os.Bundle; public class HelloJni extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText(stringFromJNI()); //调用native函数 setContentView(tv); } /* * 声明含有native关键词的函数,就可以在类中使用了。 */ public native String stringFromJNI(); /* * 该函数并没有在共享库中实现,但是仍然可以声明。 * 没有实现的native函数也可以在类中声明,native方法仅在首次调用时才开始搜索。 * 若没有找到该方法,会抛出java.lang.UnsatisfiedLinkError异常 */ public native String unimplementedStringFromJNI(); /* 使用静态方式再创建类时就载入共享库,该共享库(后面会介绍)在程序安装后 * 位于/data/data/com.example.HelloJni/lib/libhello-jni.so */ static { //这个类被加载的时候,加载 了这个 .so的库 System.loadLibrary("hello-jni"); } }
Java代码中调用native函数很简单。大致分为以下几步:
System.loadLibrary
方法载入共享库
hello-jni.c
#include <string.h> #include <jni.h> //由google 提供的标准头文件,包含了 与Java 交互的结构 /** * (Java_) + (包名把点换成了下划线)+(带上类文件名)+(Java中调用的方法名) */ jstring Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env, jobject thiz ) { /** * JNIEnv* env 是指针型变量,指向的是和当前线程关联的,通过这个可以访问到和这个线程有关的所有东西 * * */ /** * C语言的字符串 是ASCII码 * Java 现在流行的是 UTF编码 */ return (*env)->NewStringUTF(env, "Hello from JNI XZQ!"); //C语言的写法 //return (*env)->NewStringUTF("Hello from JNI XZQ!"); //C++语言的写法,不用带 env, }
写完后,cmd 切换到工程目录下, ndk-build编译下,之后可以安装
标签:android style blog http color os 使用 java ar
原文地址:http://www.cnblogs.com/zhiqixue/p/3972103.html