Android jni
来源:互联网 发布:mac怎么升级os x10.11 编辑:程序博客网 时间:2024/06/06 17:23
1、配置环境变量,这样才能正常使用javah
JAVA_HOME设置为:
C:\Program Files\Java\jdk1.6.0_30
classpath设置为:
.;%JAVA_HOME%\lib;
Path设置为:
%JAVA_HOME%\bin;
2、新建Android Project, 项目中有2个类,一个是activity,另一个是我们调用jni的类.同时创建名为jni的文件夹
package com.rydiy.jniTest;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;public class JNITest extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView text = (TextView)findViewById(R.id.text); int a = 1; int b = 2; CallJni jni = new CallJni(); int c = jni.add(a, b); text.setText(String.valueOf(c)); }}
package com.rydiy.jniTest;public class CallJni {static {System.load("jniTest");}public native int add(int a, int b);}
3、生成.h头文件
cd 要项目目录,执行
javah -classpath bin\classes -d jni com.rydiy.jniTest.CallJni
生成: com_rydiy_jniTest_CallJni.h rename: jniTest.h
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_rydiy_jniTest_CallJni */#ifndef _Included_com_rydiy_jniTest_CallJni#define _Included_com_rydiy_jniTest_CallJni#ifdef __cplusplusextern "C" {#endif/* * Class: com_rydiy_jniTest_CallJni * Method: add * Signature: (II)I */JNIEXPORT jint JNICALL Java_com_rydiy_jniTest_CallJni_add (JNIEnv *, jobject, jint, jint);#ifdef __cplusplus}#endif#endif
4、在jni文件夹里新建jniTest.c
#include <jniTest.h>jint JNICALL Java_com_rydiy_jniTest_CallJni_add (JNIEnv *e, jobject obj, jint a, jint b) {return (a+b);}
5、在jni文件夹中新建Android.mk
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := jniTestLOCAL_SRC_FILES := jniTest.cinclude $(BUILD_SHARED_LIBRARY)
6、使用NDK编译生成libjniTest.so
cygwin中cd到项目目录中(jni文件夹一级),调用NDK里的ndk-build,生成libjniTest.so。编译成功项目目录总会生成libs文件夹
7、运行项目即可
- [JNI] Android JNI总结
- Android JNI
- Android JNI
- android JNI
- Android JNI
- android jni
- android JNI
- Android JNI
- android jni
- android JNI
- android JNI
- android JNI
- android jni
- Android JNI
- Android JNI
- Android JNI
- android JNI
- android jni
- boost库之shared_ptr
- canvas.translate(x,y)一点新的认识
- PHP 5.4正式版重要新特性
- android工具之TraceView学习笔记~
- C++ Placement New
- Android jni
- LotusScript接收POST数据的方法。从IBM网站上淘到的
- 《那些年啊,那些事——一个程序员的奋斗史》——95
- 解决连接oracle 11g报ORA-01034和ORA-27101的错误
- 关于创业:为何我们总是会高估自己?
- Android中AsyncTask的简单用法
- python
- Using the Strategy pattern in algorithm design
- 一些软件设计的原则