android c 调用java类_GitHub - feng905/testjni4android: android jni开发中,在c代码中调用java代码,需要先反射再调用。 jni4andr...

testjni4android

android jni开发中,在c代码中调用java代码,需要先反射再调用。 jni4android是bilibili开源的一个工具,自动根据java类生成 .h和.c 的反射文件 这个项目就是一个简单的使用示例。

jni4android 项目地址

介绍

由bilibili开源的用于快速开发jni的工具,在ijkplayer中使用。

主要作用是自动生成jni中的 .h 和 .c 文件,并做好了与java类的反射,在jni中调用java类很方便。sdk中java类或自己累都可以~

注意:这个工具目的是快速建立反射,让c去调用java

安装

git clone https://github.com/Bilibili/jni4android.git jni4android

cd jni4android

build dependencies

you don't have to run this if you have bison 3.x installed

./get-deps.sh

./configure

make

j4a -c /your/java/path/demo.java

没报错的话就会生成 .h和.c了

提示: 执行上边命令时 demo.java 中的方法不能写实现,不然会报错,最好将这个类在jni的目录下重写一份,用于执行上边命令

使用

将生成的 .h 和 .c 已经下面的这两个文件,导入到jni工程里,并添加头文件和源文件进cmakelist

demo.h

demo.c

jni4android/include/j4a/j4a_base.h

jni4android/include/j4a/j4a_base.c

有上边的这些文件就可以了。

include "j4a/class/com/example/feng/testjni4android/CallBack/NotifyEvent.h"

// 注册、反射

J4A_LOAD_CLASS(com_example_feng_testjni4android_CallBack_NotifyEvent);

// 使用

J4AC_com_example_feng_testjni4android_CallBack_NotifyEvent__postEvent__withCString(env,thiz,100,"hello jni...");

jni4android中还提供了下边几个辅助文件,使用更方便

j4a_allclasses.h

j4a_allclasses.c

j4a_allclasses.loader.h

j4a_allclasses.include.h

​​

只需要 调用 J4A_LoadAll__catchAll(evn) 这一个函数,完成所有类的反射。

​​

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值