如何在Android

时间:2018-04-17 01:06:33

标签: java android c++ c sqlite

我想在我的Android项目中添加一个C ++库,但我一直收到错误:

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

该项目尝试使用SQLite amalgamation .so 库。

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

提前谢谢大家。

我的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 个答案:

答案 0 :(得分:2)

  1. 在build.gradle中删除配置。此路径是jniLibs的默认值,不需要客户配置。

    sourceSets {     主{         jniLibs.srcDirs = ['src / main / jniLibs']     } }

  2. 或尝试使用此配置

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