我没有找到任何能够在线回答我的具体问题的人。我有一个旧的Android项目,我想复制一些.so库并将它们粘贴到一个新项目中。我是新手,我知道我需要告诉我的新程序在哪里找到这些库,但我不知道我是否应该使用CMake或NDK来导入alreay编译的代码。这就是我的目录:
我在我的程序中调用了这个库:
static {
System.loadLibrary("serial_port");
}
但是如何告诉编译器在哪里找到这些复制和粘贴的文件?
我根据Android的documentation启动了一个文件,但我对一些事情感到困惑。这就是我到目前为止所做的:
# Sets the minimum version of CMake required to build your native library.
# This ensures that a certain set of CMake features is available to
# your build.
cmake_minimum_required(VERSION 3.4.1)
# Specifies a library name, specifies whether the library is STATIC or
# SHARED, and provides relative paths to the source code. You can
# define multiple libraries by adding multiple add.library() commands,
# and CMake builds them for you. When you build your app, Gradle
# automatically packages shared libraries with your APK.
add_library( # Specifies the name of the library.
serial_port
# Sets the library as a shared library.
SHARED
IMPORTED
serial_port/src/${ANDROID_ABI}/libserial_port.so
# Provides a relative path to your source file(s).
src/main/cpp/libs/armeabi/libserial_port.so )
我认为我做得不对。请看一看并指出我正确的方向。感谢
答案 0 :(得分:4)
您需要将它们放在各自文件夹中的目录jniLibs
内。
例如
/app/src/main/jniLibs/armeabi/libserial_port.so
并且您不需要使用任何其他工具(如CMake)来使用它们。你可以直接加载它们。
答案 1 :(得分:1)
Android Studio的默认JNI forlder为 jniLibs 。如果您将本机库放在此文件夹中,那么它将自动添加到应用程序构建路径。
在您的情况下,您已将本机代码放在 libs 文件夹中。要使其工作,您必须在 app / build.gradle 文件中指定新的JNI路径。您可以使用以下gradle脚本:---
android{
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}