码迷,mamicode.com
首页 > 其他好文 > 详细

NDK 编程写法1

时间:2014-09-15 07:40:48      阅读:208      评论:0      收藏:0      [点我收藏+]

标签: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 方法载入共享库
  • 声明native方法
  • 调用native方法

 


 

 

 

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编译下,之后可以安装

 

NDK 编程写法1

标签:android   style   blog   http   color   os   使用   java   ar   

原文地址:http://www.cnblogs.com/zhiqixue/p/3972103.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!