Android Studio如何将自己的C C++ 源码打包成库并使用

做Android开发的都知道,Android可以通过JNI来和C C++打交道。当然这一块涉及到知识点也比较多,要对C和C++有基本的掌握,还要了解静态库和动态库,关于静态库和动态库这一块的知识点,后面我再记录一下自己的学习分享,这里先介绍如何使用Android Studio来打包我们C代码,以库的方式来提供给自己或者别人使用。要想掌握好这一块的知识点,还是需要不断尝试,不断摸索。

创建工程

首先我们先创建好工程,选择 include C++ support

Android Studio如何将自己的C C++ 源码打包成库并使用

这里我们先大致的看一下这个支持C++的项目和我们平时的有什么不一样。

Android Studio如何将自己的C C++ 源码打包成库并使用

从文件结构上看,项目多了一个CMakeLists.txt ,后面我们的一些操作也会在这个文件上。然后再看一下gradle文件有啥不一样。Android Studio如何将自己的C C++ 源码打包成库并使用

图上标出来的这段代码,应该就是配置CMakeLists.txt了。

编写C++代码

打开项目路径,能看到项目自动生成了一个cpp文件夹,里面有一个自动生成的native-lib.cpp文件,在MainActivity中也有相关的调用代码。
Android Studio如何将自己的C C++ 源码打包成库并使用

这里我们先编译一下工程,然后查看一下build文件,如下图所示,这个libnative-lib.so就是默认替我们生成的C++动态库。

Android Studio如何将自己的C C++ 源码打包成库并使用

查看一下我们CMakeLists.txt 中的代码,我们就明白了。
Android Studio如何将自己的C C++ 源码打包成库并使用

native-lib 表示要生成的库的名字,SHARED表示动态库 , src/main/cpp/native-lib.cpp表示C++文件路径,接下来我们就参考默认工程的一些信息来改造一下,把我们自己的一些普通C C++文件打包成库。先把这些默认生成的代码给删了,然后如下图所示,创建test.cpp文件
Android Studio如何将自己的C C++ 源码打包成库并使用
修改CMakeLists.txt 文件如下图所示:
Android Studio如何将自己的C C++ 源码打包成库并使用
编译之后,在build文件夹下,cmake文件夹下生成libtest-lib.so动态库文件。我们将这个库文件拷贝到Linux系统下,使用命令查看函数名字。
Android Studio如何将自己的C C++ 源码打包成库并使用
可以看到,这里函数的名字和我们cpp文件中不一样,这里我也暂时不能解释为什么,后面研究一下,再补上,如果有大神看到了能解释,还希望大神指点一下。之后如果我们要调用的话,只要引入这个so库文件,然后使用so库文件中的函数名调用,这里很是不完美,待我研究出问题所在,再补上解释。

参考文章

这里给个链接,有更好的方案 https://blog.csdn.net/ma598214297/article/details/78312992