Android_JNI的一个实例

来源:互联网 发布:淘宝网如何开店铺步骤 编辑:程序博客网 时间:2024/05/22 00:46

参考资料:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/0415/1166.html

第一步:创建一个AndroidJniTest的Android工程,默认会生成MainActivity.java文件,在该目录下新建新类TestJNI.java。如下图:

第二步:编写TestJNI.java,代码如下:

package com.example.demo;public class TestJNI {static{System.loadLibrary("jniinterface");}public static native int getInt();public static native String getString();}


第三步:使用cmd命令使生成C++的.h头文件:

第四步:拷贝生成的.h头文件。

      使用第三部的命令后,后发现在目录F:\program2\AndroidJniTest\bin\classes下生成了com_example_demo_TestJNI.h文件。在工程中新建文件夹jni,将上面的.h头文件拷贝到jni文件夹下。

第五步:编写C++代码和android.mk文件

  1 编写C++代码。将.h头文件里生成的函数复制到.cpp文件下,实现其函数:

#include"com_example_demo_TestJNI.h"//包含刚生成的头文件#include<stdio.h>#include<stdlib.h>int sum(){int x,y;x = 100;y = 1000;x += y;return x;}JNIEXPORT jint JNICALL Java_com_example_demo_TestJNI_getInt  (JNIEnv *, jclass)//复制头文件生成的函数,实现该函数{return sum();}JNIEXPORT jstring JNICALL Java_com_example_demo_TestJNI_getString  (JNIEnv *env, jclass)//此处的env参数头文件没有{return env->NewStringUTF("HelloNDK");}

  2 编写android.mk文件。android.mk可以直接从NDK的samples里例子的jni目录下直接拷过来改一下。代码如下:

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE    := jniinterfaceLOCAL_SRC_FILES := com_example_demo_TestJNI.cppinclude $(BUILD_SHARED_LIBRARY)

其中你只需要该LOCAL_MODULE和LOCAL_SRC_FILES就可以了。
说明:LOCAL_MODULE是描述模块的,用来给java调用的模块名,会生成对应的libtestJni.so
        LOCAL_SRC_FILES就是源文件啦,多个文件空格隔开即可。
接下来,我们要开始编译生成so文件咯。

第六步:编译生成.so文件。

编译生成 .so文件后工程如下:

第七步:用Android调用JNI

package com.example.demo;import android.os.Bundle;import android.app.Activity;import android.widget.TextView;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);TextView tv = (TextView)findViewById(R.id.name);tv.setText(String.valueOf(TestJNI.getInt()+", "+TestJNI.getString()));}}

     运行程序如下:

程序代码:http://download.csdn.net/detail/yegucheng2618/7613475

 

0 0
原创粉丝点击