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
- Android_JNI的一个实例
- Android_JNI实例
- android_JNI数据类型
- android_JNI学习
- android_JNI学习
- Android_JNI浅析(1)
- Android_JNI浅析(2)
- android_JNI宏观介绍
- Android_JNI环境搭建
- Android_JNI浅析(2)
- Android_JNI常用操作记录
- 一个IPTABLES的实例
- mvc的一个实例
- JInternalFrame的一个实例
- fork()的一个实例
- socket的一个实例
- URLRequest 的一个实例
- CMFCColorButton的一个实例
- [iOS]数据持久化-沙盒存储
- 8-2. 求矩阵的局部极大值(15)
- 【iOS开发】 XML SAX与DOW的解析
- python print 追加写入文件中
- [cocos2dx笔记008]cocos2d 用luabridge手动绑定类
- Android_JNI的一个实例
- _raw_writel, writel_relaxed 和 writel的区别
- 二分法查找数字--算法分析和源码
- Servlet学习笔记(一)—— Myeclipse配置Tomcat
- 全栈JavaScript之路( 二十一)HTML5 scrollIntoView方法
- C++: selection sort
- MyEclipse内存不足问题
- 一个程序员的爱情表白书(娱乐一下)
- 7种对控件访问方式