java代码编写
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public
class
HelloWorldActivity
extends
Activity {
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
TextView tv =
new
TextView(
this
);
tv.setText(helloWorldFromJNI());
setContentView(tv);
}
public
native
String helloWorldFromJNI();
// native声明,表示这个方法来自Native层。实现过程已经在native层实现了
static
{
System.loadLibrary(
"HelloWorld"
);
// 加载库,前面的lib和,后缀名不用写
}
}
|
Android.mk文件编写
|
1
2
3
4
5
6
7
8
|
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
#LOCAL_MODULE表示生成的库的名字,前面的lib和后缀名不用写
LOCAL_MODULE := HelloWorld
LOCAL_SRC_FILES := HelloWorld.c
include $(BUILD_SHARED_LIBRARY)
|
c文件编写
|
1
2
3
4
5
6
7
8
9
|
#include <string.h>
#include <jni.h>
jstring
Java_com_conowen_helloworld_HelloWorldActivity_helloWorldFromJNI( JNIEnv* env,
jobject thiz )
{
return
(*env)->NewStringUTF(env,
"HelloWorld! I am from JNI !"
);
}
|
Cygwin编译
$ndk/ndk-build
本文介绍了一个使用Java Native Interface (JNI) 的简单示例。该示例展示了如何从Java代码中调用C语言编写的本地方法,并通过Android.mk构建原生库。文中包括了Java侧的Activity类定义、Android.mk构建脚本以及C语言源文件。
638

被折叠的 条评论
为什么被折叠?



