之前文章讲解过有关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