Android调用C/C++库

AndroidStudio版本2021.1.1

一、AndroidStudio将C/C++库打包成so库过程

  1. AndroidStudio新建NativeC++工程;
    在这里插入图片描述
  2. 在Tools->SDK Manager里下载好NDK,CMake

在这里插入图片描述

  1. 在cpp文件夹下放置需被打包的C/C++源码:如图,inc里放置头文件,src里放置.c/.cpp文件。.c/.cpp里注意修改引用路径
    #include “…/inc/Buffer_Data_M.h”
    #include “…/inc/Buffer_TCC_State_Change.h”
    在这里插入图片描述
  2. CMakeLists里添加所有C/C++代码和native-lib.cpp.

在这里插入图片描述

  1. 新建类fafb,在类中声明需要调用的方法。本步涉及类型转换(C/C++ ->JNI -> Java)

在这里插入图片描述

  1. 在native-lib.cpp里实现方法从C/C++到JNI的转换

请添加图片描述

  1. 执行Build->Make proiect,可得到so文件
  2. so库生成位置如下。自此,so库打包完成

在这里插入图片描述

二.Android使用so库

Android调用so库

  1. 将so文件放入新的工程下
    在这里插入图片描述
sourceSets {
        main {
            jniLibs.srcDirs = ['libs','jniLibs']
        }
    }
  1. 在新工程,同一包名目录下新建名字相同的类,复写加载和声明函数。与一.5完全相同
    请添加图片描述3.在其他函数中调用过程:
fsfb main=new fsfb();
        Log.d("test1",main.add(2,6)+"");

在这里插入图片描述调用完成。

如果无需给第三方使用,只执行“一”即可实现JAVA调用C/C++源码,若C/C++源码有问题,还能自行修改再重新生成so库

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio 可以通过 JNI(Java Native Interface)来调用 C/C++ 文件。 具体步骤如下: 1. 在 Android Studio 项目下,创建一个名为 `jni` 的目录。 2. 在 `jni` 目录下,创建一个名为 `native-lib.c` 的 C 文件。 3. 在 `native-lib.c` 文件中实现需要调用的 C/C++ 函数。 4. 在 `jni` 目录下创建一个名为 `Android.mk` 的文件,用于编译 `native-lib.c`。 ``` LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := native-lib LOCAL_SRC_FILES := native-lib.c include $(BUILD_SHARED_LIBRARY) ``` 5. 在 `jni` 目录下创建一个名为 `Application.mk` 的文件,用于指定编译选项。 ``` APP_ABI := all ``` 6. 在 `MainActivity.java` 文件中,声明需要调用的 C/C++ 函数。 ``` public native int add(int a, int b); ``` 7. 在 `MainActivity.java` 文件的 `onCreate` 方法中,加载动态,并调用 C/C++ 函数。 ``` static { System.loadLibrary("native-lib"); } int result = add(1, 2); ``` 8. 使用 `ndk-build` 命令编译动态,并将编译生成的 `.so` 文件放置到 `app/src/main/jniLibs` 目录下。 9. 运行 Android 应用程序,即可调用 C/C++ 函数。 注意事项: 1. 需要在 `build.gradle` 文件中添加如下配置: ``` android { defaultConfig { ndk { abiFilters 'armeabi-v7a', 'x86' } } sourceSets { main { jniLibs.srcDirs = ['src/main/jniLibs'] } } } ``` 2. 需要安装 NDK 工具包,并在 `local.properties` 文件中指定 NDK 路径。 ``` ndk.dir=/path/to/ndk ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值