在Android Studio项目中放置JNI/本机库的位置

在Android Studio项目中放置JNI/本机库的位置,android,gradle,android-ndk,java-native-interface,Android,Gradle,Android Ndk,Java Native Interface,我正在尝试编译以下代码: 输入到apk文件中 为此,, 我创建了一个带有空活动的默认Android项目。之后,我将存储库中的相关java文件添加到我的项目中,并进行了一些修改。我还将适当的xml/图像资源添加到我的项目中 现在,我需要将JNI/本机库添加到我的项目中 但是,我不知道放在哪里。我能找到的唯一参考资料是 1] 但是,我的项目结构看起来与截图不同 及 2] 这是旧的/过时的/缺乏细节的 以下是我的项目结构: 支持jni的Android项目的典型结构如下: . ├── CMakeLis

我正在尝试编译以下代码:

输入到apk文件中

为此,, 我创建了一个带有空活动的默认Android项目。之后,我将存储库中的相关java文件添加到我的项目中,并进行了一些修改。我还将适当的xml/图像资源添加到我的项目中

现在,我需要将JNI/本机库添加到我的项目中

但是,我不知道放在哪里。我能找到的唯一参考资料是

1] 但是,我的项目结构看起来与截图不同

2] 这是旧的/过时的/缺乏细节的

以下是我的项目结构:


支持jni的Android项目的典型结构如下:

.
├── CMakeLists.txt // Your cmake configuration files. 
├── app.iml
├── build
├── build.gradle
├── libs
├── proguard-rules.pro
└── src
    ├── androidTest
    │   └── java
    ├── main
    │   ├── AndroidManifest.xml
    │   ├── cpp // Directory to put your jni native source code. 
    │   │   └── native-lib.cpp
    │   ├── java
    │   ├── jniLibs // Directory to put your jni libs, i.e. the .so files. 
    │   └── res
    └── test
        └── java
但是,从理论上讲,您可以在应用程序级别
build.gradle
文件中的任意位置配置
jniLibs
路径

android {
    ...
    defaultConfig {
        ...
        externalNativeBuild {
            cmake {
                cppFlags "-frtti -fexceptions"
            }
        }
    }
    ...
    externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
    ...
    sourceSets {
        main {
            // put your jni libs.
            jniLibs.srcDirs += "${projectDir}/jniLibs"]
        }
        debug {
            // put your debug version jni libs.
            jniLibs.srcDirs += "${projectDir}/jniLibs/debug"]
        }
        release {
            // put your release version jni libs.
            jniLibs.srcDirs += "${projectDir}/jniLibs/release"]
        }
    }
    ...
}


对于Android Studio 3.0+,您不需要为
c/c++
源代码显式配置
jniLibs
路径,因为它将由Android Studio自动管理。所有
src/main/cpp
下的
c/c++
源代码都将自动编译并打包到apk中

只是确保您看到: