android ndk c代码调用java的代码
来源:互联网 发布:淘宝的手机充值平台 编辑:程序博客网 时间:2024/05/16 18:04
这里简单说一下ndk中c调用java的方法
至于ndk的环境搭建这里就不说了,有空会贴上来
java调c的感觉相对比较简单,以后有空一并贴上来,这里说下 c去回调java的代码了
首先创建工程就不说了,我们这里展开一个经典例子 helloworld 哈哈哈
第一步,在android工程中 建一个类,里面放个方法,syso一个helloworld。同时建议建立一个activity,这样可以放一个按钮,点击的时候可以看到效果
这里稍微展开下 1:写一个java方法
public void helloFromJava(){
System.out.println("helloFromJava");
}
2:写对应的native方法
static{
System.loadLibrary("Hello");
}
public native void callback1();
3:实现一下调用,放在按钮中去调用,就不说啦
4:这里需要用javah实现一下C头文件的生成,当然也可以不这么做,另外的方法我就不展开了
第二部 在ndk中建立C文件啦
#include <jni.h>
#include "com_itheima15_ndk4_DataProvider.h" //这个头文件由 jdk 中的javah生成,相信来看这个的,就不需要介绍javah怎么用了哦
//日志模块,习惯性的放一个日志模块,方便去调试
#include <android/log.h>
#define LOG_TAG "System.out"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
JNIEXPORT void JNICALL Java_com_xuchulong_ndk4_DataProvider_callback1
(JNIEnv * env, jobject obj){
//C调用java空方法
/*
* 1、 找到该方法存在哪个类中(找到存在该方法的类)
* 2、在该类中找到该方法
* 3、执行该方法
* */
char* classname = "com/xuchulong/ndk4/DataProvider";//这个是我的类名,根据自己情况放,我的helloworld就放在这个里面的
//第一步 找到该类
// jclass (*FindClass)(JNIEnv*, const char*);
jclass clazz = (*env)->FindClass(env, classname);
//第2步 在该类中找到该方法
// jmethodID (*GetMethodID)(JNIEnv*, jclass, const char*, const char*);
// jclass 在那个类中查找
// const char* 查找的方法名称
// const char* 方法的签名 jdk javap -s 得到方法的签名使用方法: javap -s 包名.类名
jmethodID method = (*env)->GetMethodID(env, clazz, "helloFromJava", "()V");
//执行该方法
//void (*CallVoidMethod)(JNIEnv*, jobject, jmethodID, ...);
(*env)->CallVoidMethod(env, obj, method);
}
好了C代码部分完成了 ndk-build一下哦,呵呵
- android ndk c代码调用java的代码
- Android NDK c调用java代码
- NDK:android调用c代码
- NDK Java 调用 C代码
- Android NDK (学习笔记八) —— Java代码与C代码间方法的调用
- Android NDK学习记录(二):C/C++调用Java代码
- NDK技术,Java项目调用C代码
- Android NDK 使用JNI调用java代码,通用代码封装
- 03_Android NDK中C语言调用Java代码,javah的使用,javap的使用以及生成签名,Android.mk的编写,C代码的编写
- Android NDK开发之C调用Java及原生代码断点调试(二)
- Android NDK开发(一)之java层调用C代码浅析
- ndk开发中,在c中调用java代码
- NDK 开发C中通过反射调用Java代码
- NDK开发c调用java代码(四)
- AndroidStudio NDK开发 c环境调用java代码
- Android 中 c 代码回调Java代码的详细步骤(jni、NDK的使用)
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- 最新的技术雷达趋势
- Unity3d中的属性(Attributes)整理
- RedHat 6.3 源码安装 MySQL-5.5.29
- 项目管理方法
- Windows phone开发——通过sliverlight开发应用,关于播放背景音乐的问题
- android ndk c代码调用java的代码
- S3c2440-ARM920t中断原理
- SQL SERVER 2008 R2 什么意思。
- !!!
- 文件批量重命名
- Core Java (九) Java的方法参数
- S3c2440支持中断源个数
- Struts2 中的值栈的理解
- 项目管理中-采购管理