Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android中使用.so文件 我想在我的Android项目中添加一个C++库,但是我一直在得到错误: Could not get unknown property 'jniLibs' for source set 'main' of type org.gradle.api.internal.tasks.DefaultSourceSet._Java_Android_C++_C_Sqlite - Fatal编程技术网

Java 如何在Android中使用.so文件 我想在我的Android项目中添加一个C++库,但是我一直在得到错误: Could not get unknown property 'jniLibs' for source set 'main' of type org.gradle.api.internal.tasks.DefaultSourceSet.

Java 如何在Android中使用.so文件 我想在我的Android项目中添加一个C++库,但是我一直在得到错误: Could not get unknown property 'jniLibs' for source set 'main' of type org.gradle.api.internal.tasks.DefaultSourceSet.,java,android,c++,c,sqlite,Java,Android,C++,C,Sqlite,该项目试图使用SQLite()的.so库 如何在项目中包含.so库并成功链接它以调用其函数 提前谢谢大家 我的身材。格拉德尔 apply plugin: 'com.android.library' android { compileSdkVersion 26 defaultConfig { minSdkVersion 15 targetSdkVersion 26 versionCode 1 versionName

该项目试图使用SQLite()的.so

如何在项目中包含.so库并成功链接它以调用其函数

提前谢谢大家

我的身材。格拉德尔

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']
    }
}
  • 删除build.gradle中的配置。此路径是jniLibs的默认值,不需要客户配置

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

  • 或者尝试使用此配置

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

  • 谢谢您的回复@xingjiu。这样我就得到了错误:
    无法列出“/project/src/main/jniLibs/libsqlite3.so”的内容。无法跟踪符号链接能否请您提供建议。一个纯干净的构建可能会有所帮助,符号链接总是由一些中间编译文件引起的。