java代码中如何嵌入c语言,Android中Java代码与C的互相调用(JNI的简单使用)

引言

最近在做项目的时候,接触到JNI,想一想自己第一次接触这个东西的时候,还是好久之前,现在既然接触到了,那我就简单的跟大家讲一讲JNI的基本使用方法。

JNI(Java Native Interface):java本地开发接口,JNI是一个协议,这个协议用来沟通java代码和外部的本地代码(c/c++),外部的c/c++代码也可以调用java代码。

我们为什么要使用JNI呢,可以从效率和安全性两方面来说:

1. 安全性:java是版解释型语言,很容易比反编译拿到源代码,我们一些加密方面的问题,就可以用JNI来实现,

2. 效率:C/C++是本地语言,比java更高效。

做JNI,我们先的下载Android NDK(Native Development Kit )下载链接:(https://developer.android.google.cn/ndk/downloads/index.html),Android NDK是一套工具集合,允许你用像C/C++语言那样实现应用程序的一部分。

JNI和NDK的区别:

从工具上说,NDK其实多了一个把.so和.apk打包的工具,而JNI开发并没有打包,只是把.so文件放到文件系统的特定位置。

从编译库说,NDK开发C/C++只能使用NDK自带的有限的头文件,而使用JNI则可以使用文件系统中带的头文件。

从编写方式说,它们一样。

知识前瞻

Java类型和本地类型的对应关系:

Java类型

本地类型(JNI)

描述

boolean(布尔型)

jboolean

无符号8个比特

byte(字节型)

jbyte

有符号8个比特

char(字符型)

jchar

无符号16个比特

short(短整型)

jshort

有符号16个比特

int(整型)

jint

有符号32个比特

long(长整型)

jlong

有符号64个比特

float(浮点型)

jfloat

32个比特

double(双精度浮点型)

jdouble

64个比特

void(空型)

void

N/A 先就看这么多吧,网上也有很多大神写的博客,写得很好,有时间可以去看看,参考博客:https://blog.csdn.net/yuzhou_zang/article/details/78410632 ,这里我只是教大家如何使用Java与C/C++的互相调用。

实战

在这里我给大家做的例子是Java调用C语言和C语言调用Java来实现加法操作。

二话不说,开干,新建Android工程。XMl界面定义如下:

XML代码

MainActivity代码如下:

public class MainActivity extends AppCompatActivity implements View.OnCl

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值