Android:在 Android Studio 中链接外部静态 C/C++ 库

Android: Linking a external static C/C++ Library in Android Studio

我已经看到很多关于使用 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++ 项目

现在这就是我卡住的地方。我已经创建了支持原生 C++ 的 Android Studio 项目,需要弄清楚将预编译的 mylib.a 文件放在哪里才能进行函数调用 "foo"。我看到了所有不同类型的地方,如 jniLibs 文件夹、libs 和 cpp 文件夹。但是没有关于之后做什么的例子。就像将本机库添加到 Gradle.

*将代码放入 Android Studio 并使用 Cmake 已经过时了,因为我只有一个静态库文件。 *

TLDR:如何将预编译的 *.a 文件添加到 Android Studio。

假设你有一个 mylib.a 某处是用 NDK 构建的,你可以 link 在你的主共享库中反对它,如下所示:

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)