JNI开发与NDK开发之详解NDK开发(Java调用C函数)

本文详细介绍了Android NDK开发中Java调用C函数的实现,包括int值运算、字符串拼接及数组运算的示例,并讲解了如何在C端使用日志函数以及检查密码正确性的应用。通过实例解析了JNI接口定义、C函数实现以及头文件的生成方法。
摘要由CSDN通过智能技术生成

之前文章讲解过有关JNI和NDK开发的基本流程,这篇文章主要针对NDK进行详细的讲解。

一、Java调用C函数

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

public native String sayHello(String s);

public native int[] increaseArrayEles(int[] intArray);

/*

* 应用: 检查密码是否正确, 如果正确返回200, 否则返回400

*/

public native int checkPwd(String pwd);

针对上面java调用C函数,我进行了三个相关的测试:

测试1:将传入的两个int值相加并返回

1、测试目标:

int值运算

2、java端

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

3、C端

JNIEXPORT jint JNICALL Java_com_atguigu_javacallc_JNIS_sum

(JNIEnv * env, jobject obj, jint x, jint y) {

//jint可以直接进行算术运算

int sum = x+y;

printf("printf c sum=%d\n", sum);//问题: 直接输出在eclipse的logcat中看不到输出

//可直接将int类型数据作为jint返回

return sum;

}

4、如何在Android日志中显示C函数输出?

1.> 在build.gradle中添加配置:

ndk {

ldLibs "log"

}

2.> 包含日志头文件, 定义日志输出函数

#include <android/log.h>

#define LOG_TAG "atguigu"

#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)

#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TA

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值