【发布时间】:2019-01-28 15:32:08
【问题描述】:
我已经看到了很多使用 Cmake 让 Native Code 在 Android Studio 中工作的答案,但是关于如何将预编译的 C/C++ 库包含到 Android 中的答案并不多。以下是我为尝试让原生库(首先尝试使用 .a)工作而采取的步骤。
1) mylib.c 是我要导入 Android Studio 的 C 库
#include "mylib.h"
int total_foo;
int foo(float y, float z) {
total_foo = y + z;
return total_foo;
}
2) mylib.h 是 mylib.c 的头文件
#ifndef _MYLIB_H_
#define _MYLIB_H_
#define MAX_FOO 20
struct foo_struct {
int x;
float y;
};
typedef struct foo_struct foo_struct;
extern int total_foo;
extern int foo(float y, float z);
#endif
3) .o 文件的命令(使用带有 make_standalone_toolchain.py 的 NDK)
$CC -o mylib.o -c mylib.c
4) .a 文件的命令
ar rcs mylib.a mylib.o
5) 创建原生 C++ 项目
现在这就是我卡住的地方。我已经创建了具有 Native C++ 支持的 Android Studio 项目,并且需要弄清楚将我的预编译 mylib.a 文件放在哪里才能使函数调用“foo”。我看到了所有不同类型的地方,比如 jniLibs 文件夹、 libs 和 cpp 文件夹。但是没有关于之后做什么的例子。就像将 Native Library 添加到 Gradle 中一样。
*将代码放入 Android Studio 并使用 Cmake 已结束,因为我将只有一个静态库文件。 *
TLDR:如何将预编译的 *.a 文件添加到 Android Studio。
【问题讨论】:
-
预建库仍应使用 NDK 构建,而不是使用主机的 GCC 或其他工具链。
-
@Michael 好的,谢谢你的提示。完成后我将使用 NDK 重新编译库,您将如何链接它?
标签: android c++ c android-studio native