美文网首页安卓兼容性Android JNI程序员
Android Studio 自动生成JNI接口C/C++头文件

Android Studio 自动生成JNI接口C/C++头文件

作者: 桂慧要努力当个攻城师 | 来源:发表于2017-09-04 19:43 被阅读131次

在安卓JNI编程中,手动写代码让原生函数及参数列表域Java类文件的原始定义一致是一件繁琐的工作。我们可以利用JDK中的javah的命令行工具为原生方法解析java类文件并生成由原生方法声明组成的头文件。

1.添加外部工具命令。

  • 点击菜单栏中File按钮,选择Settings>>Tools>>External Tools。
添加外部工具命令 添加外部工具命令
  • 填写工具名称,工具分组和工具功能描述。
  • 点击程序路径文本框后的Inser Macros 按钮指定命令的路径。
指定程序命令的路径
  • 指明外部命令行工具名称。
指明外部命令行工具名称
  • 指定执行命令行工具需要的各类参数。
指明参数
  • 设置工作路径
设置工作路径.png

完整命令

$JDKPath$\bin\javah -d src/main/cpp -classpath F:\Android\sdk\extras\android\m2repository\com\android\support\appcompat-v7\26.0.0-alpha1\appcompat-v7-26.0.0-alpha1-sources.jar;$OutputPath$;$ModuleSdkPath$\platforms\android-25\android.jar $FileClass$
  • $JDKPath$\bin\javah

命令行工具的路径

  • -d

指明生成的头文件所存放的路径

  • -classpath

指定类和所依赖的架包所存在的路径

  • $FileClass$

指定的类

2.指定java类文件生成JNI接口C/C++头文件

  • 创建java类文件,并在类中声明JNI接口方法。
创建java类文件
  • 工程目录视图内选中需要生成对应JNI接口C/C++头文件的java类文件。右键选择External Tools>>Generate C and C++ Header File。
生成JNI接口C/C++头文件
  • 查看生成的头文件。
生成的头文件.png

按着上述步骤进行设置和操作之后我们要在C/C++文件中包含这个文件,并一一实现其中的原生方法。

在编程时,需要注意的是,java 类文件所在的包名路径必须和原生方法中指定的包名保持一致,不然java无法调用原生方法。

相关文章

  • Android Studio 自动生成JNI接口C/C++头文件

    在安卓JNI编程中,手动写代码让原生函数及参数列表域Java类文件的原始定义一致是一件繁琐的工作。我们可以利用JD...

  • 安卓NDK

    android Studio 生成jni头文件 E:\StudioProjectDemo\HelloNDK\app...

  • Android Studio External Tools: 自

    详情见:@Android Studio自动生成jni header文件

  • Android NDK开发小技巧

    目录 快速生成JNI头文件 打开Android Studio:File->Settings->External T...

  • Java SpringBoot引入C/C++库(基于JNI)

    获取JNI头文件 写一个代表C++库的接口的Java Class 将它转化为class 再转化为JNI头文件.h,...

  • JNI

    Android JNI 技术 一,注册JNI接口 附录A 头文件

  • JNI高阶知识总结

    JNI与NDK的关系 NDK可以为我们生成了C/C++的动态链接库,JNI是java和C/C++沟通的接口,两者与...

  • jni问题

    AndroidStudio JNI开发时,javah生成c头文件出现找不到android.support.v7.a...

  • JNI&NDK

    参考资料 Android Studio JNI开发入门教程android studio之jni(上)生成so文件编...

  • NDK开发环境配置

    1,新建项目添加C++支持,让Android Studio自动生成相关的配置文件2,设置生成的.SO库名和相应的平...

网友评论

    本文标题:Android Studio 自动生成JNI接口C/C++头文件

    本文链接:https://www.haomeiwen.com/subject/dvjejxtx.html