我已经看到了很多答案,可以使用Cmake在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文件夹。但是没有任何事后的例子。就像将本机库添加到Gradle中一样。
*因为我只有一个静态库文件,所以无法将代码放入Android Studio并使用Cmake。 *
TLDR:如何向Android Studio中添加预编译的* .a文件。
答案 0 :(得分:2)
假设您有一个mylib.a
用NDK构建的地方,您可以像这样在您的主共享库中链接它:
CMakeLists.txt:
cmake_minimum_required(VERSION 3.4.1)
add_library(native-main-lib SHARED src/main/cpp/native-lib.cpp)
add_library(my_lib STATIC IMPORTED)
set_target_properties(my_lib PROPERTIES IMPORTED_LOCATION path/to/mylib.a)
set_target_properties(my_lib PROPERTIES INCLUDE_DIRECTORIES path/to/mylib/include)
target_link_libraries(native-main-lib my_lib)