1、打开eclipse,点击file->new->Android Application Project,如果没有这个选项,点击file->new->other,选择Android Application Project,点Next。
2、输入名称,选择API版本。
3、点Next。
4、选择默认,点Next。
5、选择默认,点Next。
6、选择Empty Acitivity,点Next。Activity Name设为MyActivity,点击finish,完成。
7.右击Test,选择new->folder,输入jni,finish。
8、新建并配置一个builder。Project->properties->builder->new,选择program,点OK。
9、在出现的界面中,输入名称,如Ndk_Builder。Location中输入ndk_builder.cmd的路径,【D:\myprogram\android-ndk-r13b-windows-x86_64\android-ndk-r13b\ndk-build.cmd】,可以点击Browse File System ...查找。Working Directory输入${workspace_loc:/Test} ,或者可以点击Browse File System ...查找。【D:\myprogram\eclipse\eclipse-workspace\Test】。
10、Refresh中选择以下三项。
Refresh resources upon completion
The entire workspace
Recuresively include sub-folders
The entire workspace
Recuresively include sub-folders
11、Build Options中选择以下几项,并点击Specify Resources...
After a “Clean”
During manual builds
During auto builds
Specify working set of relevant resources
During manual builds
During auto builds
Specify working set of relevant resources
12、选择jni,点击finish。
13、点击OK,点击Apply and Close完成。
14、右击Test,选择new->class,输入name,如JniClient,点击finish完成。
15、
JniClient.java的内容为:
package com.test;
public class JniClient {
static public native String AddStr(String strA, String strB);
static public native int AddInt(int a, int b);
}
public class JniClient {
static public native String AddStr(String strA, String strB);
static public native int AddInt(int a, int b);
}
16、打开命令提示符,找到Test\bin\classes目录,输入javah com.test.JniClient回车。
17、将刚生成的
Test\bin\classes目录下的
com.test.JniClient.h文件拷贝到
Test\jni目录下,并在该目录下创建 com
.test.JniClient.c文件和Android.mk文件。
com.test.JniClient.c文件内容如下:
#include "com_test_JniClient.h"
#include <stdlib.h>
#include <stdio.h>
#ifdef __cplusplus
extern "C"
{
#endif
/*
* Class: com_ndk_test_JniClient
* Method: AddStr
* Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_test_JniClient_AddStr
(JNIEnv *env, jclass arg, jstring instringA, jstring instringB)
{
jstring str = (*env)->NewStringUTF(env, "HelloWorld from JNI !");
return str;
}
/*
* Class: com_ndk_test_JniClient
* Method: AddInt
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_com_test_JniClient_AddInt
(JNIEnv *env, jclass arg, jint a, jint b)
{
return a + b;
}
#ifdef __cplusplus
}
#endif
#include <stdlib.h>
#include <stdio.h>
#ifdef __cplusplus
extern "C"
{
#endif
/*
* Class: com_ndk_test_JniClient
* Method: AddStr
* Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_test_JniClient_AddStr
(JNIEnv *env, jclass arg, jstring instringA, jstring instringB)
{
jstring str = (*env)->NewStringUTF(env, "HelloWorld from JNI !");
return str;
}
/*
* Class: com_ndk_test_JniClient
* Method: AddInt
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_com_test_JniClient_AddInt
(JNIEnv *env, jclass arg, jint a, jint b)
{
return a + b;
}
#ifdef __cplusplus
}
#endif
Android.mk的内容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Test
LOCAL_SRC_FILES := com_test_JniClient.c
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := Test
LOCAL_SRC_FILES := com_test_JniClient.c
include $(BUILD_SHARED_LIBRARY)
18.将两个文件点击保存后,会自动生成obj文件夹。
19、编辑MyActivity.java,内容如下:
package com.test;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import android.view.Menu;
import android.view.MenuItem;
public class MyActivity extends Activity {
static {
System.loadLibrary("Test");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_my);
String str = JniClient.AddStr("prefix", "suffix");
int iSum = JniClient.AddInt(5, 2);
String strSum = "5 + 7 = " + iSum;
TextView tv1 = new TextView(this);
tv1.setText(str);
setContentView(tv1);
}
}
20.保存文件,点击运行,右击Test,run as->Android Application。