java头文件怎么写_国二C简单还是java简单「建议收藏」

java头文件怎么写_国二C简单还是java简单「建议收藏」Java生成jni.h头文件,java调用C方法,举例说明(图文详解)_java掉用c库

环境搭建

1. android studio2021.2.1

2. JDK版本1.8

一、创建一个android项目 

File ——> New ——> New Project ——> Empty Activity

创建后如下图所示

java头文件怎么写_国二C简单还是java简单「建议收藏」

二、创建一个java调用C的类

2.1 java类命名为JNITest,创建一个两数之和的方法sums

大概需求:①java传两个整数给C

                  ②C接收到来自java的两个整数,并且相加

                  ③C把两个数之和的结果返回给java

java头文件怎么写_国二C简单还是java简单「建议收藏」

 2.2 根据java类生成jni.h的头文件

(1)AS打开Terminal窗口

点击底部导航栏Terminal

java头文件怎么写_国二C简单还是java简单「建议收藏」

(2) 用命令打开JNITest类所在的目录

 在Terminal窗口中输入cd app\src\main\java\com\zaq\javacallc,按键盘Enter键

java头文件怎么写_国二C简单还是java简单「建议收藏」

 (3)执行命令 javac -encoding utf8 -h . JNITest.java(注意:-encoding utf8 指定源文件编码格式,-h后面有个点, 点 前后面都有个空格,点的意思是头文件生成在当前目录下)

执行后过会会自动生成一个jni头文件com_zaq_javacallc_JNITest.h,如下图所示:

java头文件怎么写_国二C简单还是java简单「建议收藏」

 三、java调用C的过程

3.1 创建/配置相应的文件

(1)在main下创建一个jni文件夹

java头文件怎么写_国二C简单还是java简单「建议收藏」

(2) 把头文件移到jni文件夹下,删除JNITest.class

java头文件怎么写_国二C简单还是java简单「建议收藏」

(3)在jni下创建C/C++ Source File,命名为Test.c。

java头文件怎么写_国二C简单还是java简单「建议收藏」 

(4)在jni下创建文件Android.mk

Android.mk里面的内容

#表示Android.mk所在目录
LOCAL_PATH := $(call my-dir)

#CLEAR_VARS变量指向特殊 GNU Makefile,用于清除部分LOCAL_变量
include $(CLEAR_VARS)

#模块名称
LOCAL_MODULE    := javacallc
#构建系统用于生成模块的源文件列表
LOCAL_SRC_FILES := Test.c

#BUILD_SHARED_LIBRARY 表示.so动态库
#BUILD_STATIC_LIBRARY 表示.a静态库
include $(BUILD_SHARED_LIBRARY)

java头文件怎么写_国二C简单还是java简单「建议收藏」

3.2  在gradle.build中的配置,生成so库文件

(1)gradle.build配置

android里面的defaultConfig配置

//定义ndkBuild默认配置属性
 externalNativeBuild {
     ndkBuild {
         cppFlags ""
     }
 }
 ndk {
     // 生成指定CPU平台对应的so库文件
     abiFilters "arm64-v8a"
 }

跟defaultConfig同级的配置

//定义ndkBuild对应的Android.mk路径(重要)
externalNativeBuild {
    ndkBuild{
        path file("src/main/jni/Android.mk")
    }
}

java头文件怎么写_国二C简单还是java简单「建议收藏」

 (2)查看最终so库文件的生成

重新Rebuild Project,即点击状态栏的 File ——> Rebuild Project

so文件的最终命名是lib+javacallc(Android,mk文件里面的模块名称).so,即:libjavacallc.so

最终生成so库文件的路径如下:

java头文件怎么写_国二C简单还是java简单「建议收藏」

 3.3 在C代码实现两数相加

(1)在Test.c编写相加代码

把com_zaq_javacallc_JNITest.h文件导入进来,再把相加方法拷贝进来进行参数的相加

java头文件怎么写_国二C简单还是java简单「建议收藏」

(2) MainActivity调用sums()方法

java头文件怎么写_国二C简单还是java简单「建议收藏」

java头文件怎么写_国二C简单还是java简单「建议收藏」

 运行后最终的输出结果如下图所示:

java头文件怎么写_国二C简单还是java简单「建议收藏」

 

今天的文章java头文件怎么写_国二C简单还是java简单「建议收藏」分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/86544.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注