文档章节

android JNI调用C和C++函数

陈洪波
 陈洪波
发布于 2014/06/13 09:37
字数 415
阅读 145
收藏 0

(接着上一篇讲)

里面定义的函数基本上看名字就可以知道他们的用处,这里就不再罗嗦。

(2)、jstring为JNI中的String类型

(3)、Java_com_example_jnitest_MainActivity_HelloJni

JNI中本地代码函数名的命名规则

Java_包名_调用该方法的类名_函数名


(4)、参数 JNIEnv *env,jobject obj

-- JNIEnv参数 : 代表的是Java环境, 通过这个环境可以调用Java里面的方法;

-- jobject参数 : 调用C语言方法的对象, thiz对象表示当前的对象, 即调用JNI方法所在的类;


4:在jni文件夹下创建Android.mk文件

代码如下

LOCAL_PATH := $(call my-dir)        

include $(CLEAR_VARS)

LOCAL_MODULE    := hello

LOCAL_SRC_FILES := hello.c

include $(BUILD_SHARED_LIBRARY)

备注:

LOCAL_PATH : 代表mk文件所在的目录

include $(CLEAR_VARS):编译工具函数,可以进行一些初始化工作

LOCAL_MODULE :编译后生成的后缀为.so的文件的名字

LOCAL_SRC_FILES :源文件的名字

include $(BUILD_SHARED_LIBRARY):告诉编译器生成动态库


5:打开cygwin应用程序

依次切换到cygdrive->刚刚jni的目录下

6:使用/android-ndk-r9d/ndk-build命令进行编译(android-ndk-r9d该文件夹复制到cygwin的根目录下

7:编译成功后,刷新android程序,会在目录下生成obj文件夹

观察后缀名为.so的文件, 其名字为lib+hello+.so


8:在MainActivity下进行调用C代码

static{

    System.loadLibrary("hello");//括号中放的是后缀名为.so的文件去掉lib和去掉.so之后的字符串

}


定义native函数

public native String HelloJni();  //该函数名和C语言中的函数名中最后的一节是一样的


最后 该方法就能在android调用了。




© 著作权归作者所有

陈洪波
粉丝 2
博文 76
码字总数 1552
作品 0
济南
程序员
私信 提问
android JNI使用方法

经过几天的努力终于搞定了android JNI部分,下面将我的这个小程序和大家分享一下。android JNI是连接android Java部分和C/C++部分的纽带,完整使用JNI需要Java代码和C/C++代码。其中C/C++代码...

linuxhunter
2011/12/26
0
2
JNI和NDK的区别

NDK(Native Development Kit)“原生”也就是二进制 android常用的开发方式是java封装的库,而这些库的底层实现是由C/C++实现,如媒体,图形库等 java调用这样实现就需要用JNI(Java Native...

长平狐
2013/01/06
62
0
【jni 编程】—— NDK环境搭建

在《站在巨人的肩膀上,谈app的创新性》一文中 http://my.oschina.net/liusicong/blog/311971,我提到过构建app技术壁垒的必要性。在构建技术壁垒时,我们往往需要调用许多库函数,例如:图像...

刘小米
2014/09/10
0
0
JNI和NDK的区别

NDK(Native Development Kit)“原生”也就是二进制 android常用的开发方式是java封装的库,而这些库的底层实现是由C/C++实现,如媒体,图形库等 java调用这样实现就需要用JNI(Java Native...

鉴客
2012/03/09
181
0
JNI和NDK的区别

NDK(Native Development Kit)“原生”也就是二进制 android常用的开发方式是java封装的库,而这些库的底层实现是由C/C++实现,如媒体,图形库等 java调用这样实现就需要用JNI(Java Native...

晨曦之光
2012/03/01
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux的基本命令

目录的操作命令(增删改查) 增: mkdir 目录名称; 查: ls 可以看到该目录下的所有的目录和文件 ls -a,可以看到该目录下的所有文件和目录,包括隐藏的 ls -l,可以看到该目录下的所有目录和...

凹凸凸
今天
2
0
在古老unix中增加新用户

Installing 4.3 BSD Quasijarus on SIMH 目标:要在4.3BSD中新增加用户dmr,指定目录/home/dmr,uid为10 gid=31(guest组,系统已建立) 4.3BSD还没有adduser或useradd 直接修改/etc/passwd...

wangxuwei
今天
2
0
Bootstrap(六)表单样式

基本样式 所有设置了 .form-control 类的 <input>、<textarea> 和 <select> 元素都将被默认设置宽度属性为 width: 100%;。 将 label 元素和前面提到的控件包裹在 .form-group 中可以获得最好...

ZeroBit
昨天
3
0
SSL 证书格式转换

SSL 证书格式转换 不同服务器情况下,需要不同的证书格式。 比如 pem 转 pfx。 pem在window 平台下可以导入,但是无法正常使用。 需要转换成pfx。 推荐在线转换工具,由中国数字证书网站提供...

DrChenXX
昨天
2
0
HAProxy

xx

Canaan_
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部