吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2768|回复: 5
收起左侧

[Android 原创] jni开发

  [复制链接]
怕上火喝王老吉 发表于 2020-3-17 11:39
本帖最后由 怕上火喝王老吉 于 2020-3-17 11:49 编辑



jni开发步骤
1. 定义字符或者是方法,被native修饰;
2.Java -jni命令,生成被native饰的.h文件;

注:要在文件src目录下 输入命令 >javah -jni 被定义的native 所在类的路径
3.h里面的东西赋值到.c,补充完整:添加参数、添加方法体;配置两个mk文件

函数名 .h文件生成
这里要结合jni.h文档看 找到方法
4. 配置两个mk文件   
加入两个文件(Android.mk   Application.mk),跟.c  .h文件放一块

5. 执行ndk命令生成so文件

6.回到Java层,加载so

7.加载保存,运行
Jni接口
1.看有没有返回值,有要定义变量接收  无就不用管
2.*env->  指出来  删掉后面括号
3. 把参数补充完整




动态注册
  流程跟静态差不多   要注意绑定JavaC进行绑定
typedef struct {
    const char* name; //第一个参数 name java 方法名;
    const char* signature; //第二个参数 signature 用于描述方法的参数与返回值,也就是java方法签名信息,
    void*       fnPtr; //第三个参数 fnPtr 是函数指针,指向 jni 函数;
} JNINativeMethod;

例子:JNINativeMethod nativeMethod[]{
          {“add”,”(FF)F”,(void*)addc}      
          {“add”,”(FF)F”,(void*)subc}
{“add”,”(FF)F”,(void*)mulc}
{“add”,”(FF)F”,(void*)divc}
};
RegisterNatives注册方法
//第一个 env  第二个 class   第三个  数组名  
第四个  数组个数 sizeof(JNINativeMethod)/sizeof(JNINativeMethod[0])
jint(*RegisterNatives)(JNIEnv*,jclass,const,JNINativeMethod*,jint);

  jint        (*GetEnv)(JavaVM*, void**, jint);//第三个版本号(return
第二个 void**&env   第一个vm

工具链接:https://pan.baidu.com/s/1Wxa-jRXx72AgUrU6icvUQA
提取码:o3uh


免费评分

参与人数 2吾爱币 +8 热心值 +1 收起 理由
qtfreet00 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
jFae + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Eaglecad 发表于 2020-3-17 20:31
Java和C的混合编程么,优秀
ytfrdfiw 发表于 2020-3-17 20:46
theName 发表于 2020-3-18 06:26
最近正想用Java和C混合起来玩一玩,就刚刚好碰到这个非常十分优秀的帖子,一定必须要留下一个好好的一个脚印,留一个mark,大大的脚印,以证明我看过了这一个这么强这么优秀的帖子。感谢楼主的无私的分享啊。
xuanxu 发表于 2020-3-18 08:14
但是没有Jna方便啊。
cwl 发表于 2020-3-18 15:16
最近也在研究这个,楼主有没有推荐看的资料,自己找了一些,都很零散
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 20:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表