首页 > 解决方案 > Android CMake 使用 prebuild .a 库

问题描述

我对 CMake 完全陌生,并且共同使用 NDK。我想出编写​​我的 JNI 接口并使用 C 库中的 2 个方法。我将此库编译为静态库并获得了 .a 文件。现在我有点迷失了,因为我不明白如何告诉 Android Studio 在尝试查找调用的函数时使用这个库。

这是我当前的 CMakeLists.txt,它位于“app”模块文件夹中。

cmake_minimum_required(VERSION 3.4.1)

add_library(my-lib SHARED src/main/cpp/my-lib.cpp )

target_link_libraries(my-lib z crypto)

target_link_libraries(my-lib ${CMAKE_CURRENT_SOURCE_DIR}/../libs/libmine.a)

在编译时,我收到警告说找不到对被调用函数的引用。我的 CMakeLists.txt 是否正确以及如何包含函数的 .h 文件?提前感谢您的帮助!

标签: androidc++cmakejava-native-interface

解决方案


首先,您还需要使用 include_directories()命令指定包含目录。其次,您似乎想将静态库(.a)与您的最终共享库链接。这是无法做到的。您要么需要整个共享库,要么需要整个静态库。


推荐阅读