Android第一次调用JNI文件 | 根据cpp或者.c文件生成so库

记录一下Android第一次使用jni文件需要做的配置


目录

一、配置 javah 命令

二、配置ndk-build 用来编译jni

三、编写android.mk、Application.mk文件


第一步:创建一个java 文件

第二步:创建jni文件夹,存放jni文件,以及生成的头部文件

一、配置 javah 命令

1、File -> Setting -> Tools ->External,点击加号,弹出弹窗

2、数据填写

Name:javah

Group:NDK

Programs:javah.exe的安装路径,如果没有的话重新安装java

Arguments:-classpath $SourcepathEntry$ -jni -d $ContentRoot$\src\main\jni $FileClass$

注:\src\main\jni 这个是我工程的jni路径,一定要记得更换!!!!!

Working directory:$SourcepathEntry$ 或者 $FileDir$

填写完毕后点击OK。

3、选择要生成头部的java文件,单击右键

单击右键 -> NDK -> javah,点击会在\src\main\jni生成对应的头文件

注:cpp或者.c文件名称需要跟头部文件一致,jni文件里的函数名称也需要更改,保持跟头部文件一致 

二、配置ndk-build 用来编译jni

1、查看自己NDK路径

根据此路径找到ndk,如果没有下载一个sdk

2、导入NDK路径

旧版更改位置:File -> Project Structure ->SDK Location

 新版的更改位置:local.properies(SDK Location)

 3、File -> Setting -> Tools ->External,点击加号,弹出弹窗

Program:根据自己NDK的路径填写

Working directory:$ModuleFileDir$\src\main

有的版本Working directory:改为$SourcepathEntry$

4、app/build.gradle的修改

        1)在Android下的defaultConfig中添加,指定ndk生成JNI文件so库

ndk {
       abiFilters "armeabi-v7a", 'arm64-v8a'

}

         2)在Android下添加以下代码,记得更改相关路径

    externalNativeBuild{
        ndkBuild {
            path './src/main/jni/Android.mk'
        }
    }
    sourceSets {
        main {
            java.srcDirs = ['src/main/java']
            jniLibs.srcDirs "libs"
        }
    }

 

4、效果展示

三、编写android.mk、Application.mk文件

1、新建Android.mk

内容填写如下:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := vendorstorage(记得更改)
LOCAL_SRC_FILES := com_example_wifimac_VendorStorage.cpp(记得更改)
LOCAL_LDLIBS += -llog
include $(BUILD_SHARED_LIBRARY)

2、新建Application.m

内容填写如下:

APP_PLATFORM := android-30
APP_MODULES := vendorstorage(记得更改)与Android.mk的一致

APP_ABI := all


如有问题麻烦各位大佬指点一下!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值