您的位置:首页 > 移动开发 > Android开发

Android NDK开发入门步骤详解

2014-10-29 10:14 651 查看
1、首先,确保你的Android NDK环境配置无误。

2、新建Android项目-MyNDKTest,在其java文件中至少包含有一个Native方法,比如:

package com.wr.myndktest;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MyNDKTestActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_my_ndktest);
TextView tv = new TextView(this);
tv.setText(""+ add(1,2));
setContentView(tv);
}

public native int add(int x,int y);

static{
System.loadLibrary("test-jni");
}
}
3、进入项目的工程目录中(有src.res等目录的文件夹 )中新建文件夹jni,然后运行命令窗口,进入工程目录的src目录(网上有人说是bin或者bin\classes目录,但是我试了不好使,可能环境不同吧,可以尝试下。我现在是Windows系统下试的,在Ubuntu下,这几种命令都不好使,好纠结呢!)下(我的是G:\Android Workplace1\MyNDKTest\src)。

运行命令:javah com.wr.myndktest.MyNDKTestActivity,会在src目录下生成com_wr_myndktest_MyNDKTestActivity.h文件(可拷贝到jni目录下)。如下所示:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_wr_myndktest_MyNDKTestActivity */

#ifndef _Included_com_wr_myndktest_MyNDKTestActivity
#define _Included_com_wr_myndktest_MyNDKTestActivity
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class:     com_wr_myndktest_MyNDKTestActivity
* Method:    add
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_com_wr_myndktest_MyNDKTestActivity_add
(JNIEnv *, jobject, jint, jint);

#ifdef __cplusplus
}
#endif
#endif
4、在jni目录下新建test-jni.c文件,将上面的.h文件中的方法拷贝过来,添加具体参数名和方法逻辑即可:

#include<jni.h>

JNIEXPORT jint JNICALL Java_com_wr_myndktest_MyNDKTestActivity_add
(JNIEnv * env, jobject thiz, jint x, jint y){
return x + y;
}
5、在jni目录下新建Android.mk文件,才能将上述文件编译成库文件:

LOCAL_PATH:=$(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE:=test-jni
LOCAL_SRC_FILES:=test-jni.c

include $(BUILD_SHARED_LIBRARY)
第一行表示:源文件路径为当前路径

第二行表示:清除local变量

第三行表示:生成的库文件的名字

第四行表示:将要编译的文件

6、一切就绪后,运行命令窗到工程目录下(有src.res.jni等目录的文件夹 ),运行ndk-build命令,会出现如下显示:

"Compile thumb : test-jni <= test-jni.c
SharedLibrary  : libtest-jni.so
Install        : libtest-jni.so => libs/armeabi/libtest-jni.so
表示成功。

7、回到Eclipse工程列表中刷新工程:然后run.

运行结果为:3.

8、更加详细的内容,可参考以下博客内容:

Android NDK开发简介

Android NDK开发之Jni的数据类型

Android NDK开发之数组类型的操作

Android NDK开发之Jni调用Java对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android android ndk jni