小试jni

1.Eclipse新建一个Android工程,右键Properties->Builder->New Builder(Program),弹出Builder的对话框。

2.Bulder的名字可以随意,Location为ndk-build.cmd的路径,Working Directory为当前工程,可在Browse中选择也可填写项目绝对路径。

3.切换到TAB,如下



4.切换至Builde Option,


ok,环境配置完成了。

剩下的就是代码喽。

-----------------------------------------------------------------------------分割线-------------------------------------------------------

1.在Eclipse下建立JniClient类

public class JniClient {
	public static native String hello(String str);
	public static native int hello(int x);
}
2.进入命令行,这里因为是在Eclispse中的工程,所以会在/classes下生成JniClient.class文件。命令行至classes目录,执行javah /pacagename/JniClient,成功的话会在classes文件夹下生成一个.h文件,名字由你的包名及类名决定。

3.在工程目录下创建Jni目录,将.h文件拷贝至此,并编写Android.mk文件及.c或.cpp文件。

#include "com_leeks_jnitest_JniClient.h"

using namespace std;

#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_leeks_jnitest_JniClient
 * Method:    hello
 * Signature: (Ljava/lang/String;)Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_leeks_jnitest_JniClient_hello__Ljava_lang_String_2
  (JNIEnv *env, jclass, jstring){
	jstring str = env->NewStringUTF(env, "Hello from JNI");
	return str;
}

/*
 * Class:     com_leeks_jnitest_JniClient
 * Method:    hello
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_leeks_jnitest_JniClient_hello__I
  (JNIEnv *env, jclass, jint a, jint b){
	return a + b;
}

#ifdef __cplusplus
}

Android.mk

LOCAL_PATH := $(call my-dir)
include  $(CLEAR_VARS)
LOCAL_MODULE := JniTest
LOCAL_SRC_FILES := com_leeks_jnitest_jniClient.cpp
include  $(BUILD_SHARED_LIBRARY)
如果需要可以在此目录新建Application.mk文件。


剩下 的就是调用了。。。


TextView tvHello;
	static{
		System.loadLibrary("JniTest");
	}
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		tvHello = (TextView) findViewById(R.id.tv_hello);
		tvHello.setOnClickListener(onClickListener);
	}
	
	OnClickListener onClickListener = new OnClickListener() {
		
		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			Toast.makeText(MainActivity.this, JniClient.hello(" ") + JniClient.sum(1, 2), Toast.LENGTH_SHORT).show();
		}
	};




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值