如何在安卓中使用 .so 文件

How to use .so files in Android

本文关键字:so 文件      更新时间:2023-10-16

我试图将C++库添加到我的Android项目中,但我不断收到错误:

Could not get unknown property 'jniLibs' for source set 'main' of type org.gradle.api.internal.tasks.DefaultSourceSet.  

该项目尝试使用SQLite(合并(.so库。

如何将 .so lib 包含在我的项目中并成功链接它以便能够调用其函数?

提前谢谢大家。

My build.gradle

apply plugin: 'com.android.library'
android {
    compileSdkVersion 26
    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
    buildToolsVersion '27.0.3'
    externalNativeBuild {
        cmake {
            path 'CMakeLists.txt'
        }
    }
    sourceSets {
        main {
            jniLibs.srcDirs = ['src/main/jniLibs']
        }
    }
}
dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:26.+'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
sourceSets {
    main {
        jniLibs.srcDirs = ['src/main/jniLibs']
    }
}
  1. 删除build.gradle中的配置。此路径是 jniLibs 的默认值,不需要客户配置。

    源集 { 主要 { jniLibs.srcDirs = ['src/main/jniLibs'] }}

或尝试使用此配置

sourceSets {
    main {
        jniLibs.srcDir(['src/main/jniLibs'])
    }
}
  1. 将 SO 文件复制到 app/src/main/jniLibs 中。
  2. 将 JNI Java 接口 jar 添加到依赖项中。
  3. System.LoadLibrary(libName(//例如,您将 xxx.so 放入 jniLibs 文件夹中。
  4. 使用 JNI java 类中的本机方法来调用 so 方法。