Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
在build.gradle文件android studio中指定.so文件_Android_Android Studio_Java Native Interface_Build.gradle_.so - Fatal编程技术网

在build.gradle文件android studio中指定.so文件

在build.gradle文件android studio中指定.so文件,android,android-studio,java-native-interface,build.gradle,.so,Android,Android Studio,Java Native Interface,Build.gradle,.so,这是我的目录结构 src -main -java -jniLibs -armeabi -lib1.so -lib2.so 需要了解构建梯度文件中应该编写哪些代码,才能将这些文件包含在构建中。 现在,我遇到了找不到.so文件的错误。 跟随 我必须补充一点 我的bUild.gradle文件 apply plugin: 'com.android.applicati

这是我的目录结构

src -main

    -java

    -jniLibs

            -armeabi

                     -lib1.so
                     -lib2.so
需要了解构建梯度文件中应该编写哪些代码,才能将这些文件包含在构建中。 现在,我遇到了找不到.so文件的错误。

跟随

我必须补充一点

我的bUild.gradle文件

 apply plugin: 'com.android.application'

android {
    productFlavors {
        arm {
            ndk {
                abiFilters "armeabi-v7a", "armeabi"
            }
        }

    }

    sourceSets
            {
                main
                        {

                            jniLibs.srcDirs = ['src/main/jnilibs']

                        }

//Another code

            }

    compileSdkVersion 26
    buildToolsVersion '26.0.0'
    defaultConfig {
        applicationId "com.goambee.biometricziqitza"
        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'
        }

    }
    splits {

        // Configures multiple APKs based on ABI.
        abi {

            // Enables building multiple APKs per ABI.
            enable true

            // By default all ABIs are included, so use reset() and include to specify that we only
            // want APKs for x86, armeabi-v7a, and mips.

            // Resets the list of ABIs that Gradle should create APKs for to none.
            reset()

            // Specifies a list of ABIs that Gradle should create APKs for.
            include "armeabi-v7a"

            // Specifies that we do not want to also generate a universal APK that includes all ABIs.
            universalApk false
        }
    }
}

dependencies {

    compile fileTree(include: ['*.jar'], dir: 'libs')
//    compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')


    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
}

//task native-libstiveLibsToJar(type: Jar, description: 'create a jar archive of the native libs') {
//    destinationDir file("$buildDir/native-libs")
//    baseName 'native-libs'
//    from fileTree(dir: 'src/main/jnilibs', include: '**/*.so')
//    into 'lib/'
//}
//
//tasks.withType(JavaCompile)
//        {
//            compileTask -> compileTask.dependsOn(nativeLibsToJar)
//        }
我在这里包括了源代码集块,我也在没有该块的情况下进行了测试。
因此,仍然生成无法访问.So文件。

如果要使用它,可以在类中这样调用它:

static {
    System.loadLibrary("libSONAME");
}
compile project(':videokit')
在您的
渐变中添加以下内容:

jniLibs.srcDirs = ['libs']

编辑:

在Android Studio中添加.so库

  • 在“src/main/”内创建文件夹“jniLibs”
  • 将所有.so库放在“src/main/jniLibs”文件夹中
  • 文件夹结构看起来像,
    |--应用程序:
    |--|--src:
    |--|--|--主要
    |--|--|--|--jniLibs
    |--|--|--|--|--armeabi
    |--|--|--|--|--|--.so文件
    |--|--|--|--|--x86
    |--|--|--|--|--|--.so文件
  • 无需额外代码,只需同步项目并运行 应用程序
  • 参考


    不知道你到底有什么文件,如果你只有的话。那么


    查看下图:

    这是我的项目中的一个“项目/库”,这是加载.so文件的方式:

    我这样编译项目:

    static {
        System.loadLibrary("libSONAME");
    }
    
    compile project(':videokit')
    

    如果您想使用它,可以在类中这样调用它:

    static {
        System.loadLibrary("libSONAME");
    }
    
    compile project(':videokit')
    
    在您的
    渐变中添加以下内容:

    jniLibs.srcDirs = ['libs']
    

    编辑:

    在Android Studio中添加.so库

  • 在“src/main/”内创建文件夹“jniLibs”
  • 将所有.so库放在“src/main/jniLibs”文件夹中
  • 文件夹结构看起来像,
    |--应用程序:
    |--|--src:
    |--|--|--主要
    |--|--|--|--jniLibs
    |--|--|--|--|--armeabi
    |--|--|--|--|--|--.so文件
    |--|--|--|--|--x86
    |--|--|--|--|--|--.so文件
  • 无需额外代码,只需同步项目并运行 应用程序
  • 参考


    不知道你到底有什么文件,如果你只有的话。那么


    查看下图:

    这是我的项目中的一个“项目/库”,这是加载.so文件的方式:

    我这样编译项目:

    static {
        System.loadLibrary("libSONAME");
    }
    
    compile project(':videokit')
    


    您正在尝试构建库,还是希望直接在应用程序中运行.so文件?使用这些.so文件如果使用.so文件,则无需在gradle中执行任何操作。。您可以直接从文件夹中使用它。您使用android NDK构建.so文件了吗?好吧,我还没有在build.gradle中编写任何代码,正如我所展示的结构,这些.so文件位于src/main/jniLibs中,但它不起作用,因为它失败并出现错误“找不到一些.so文件”。我该怎么办?您是在尝试构建库还是希望直接在应用程序中运行.so文件?使用这些.so文件如果使用.so文件,则不必在gradle中执行任何操作。。您可以直接从文件夹中使用它。您使用android NDK构建.so文件了吗?好吧,我还没有在build.gradle中编写任何代码,正如我所展示的结构,这些.so文件位于src/main/jniLibs中,但它不起作用,因为它失败并出现错误“找不到一些.so文件”。我该怎么办?不太可能。错误消息表明loadLibrary失败,而不是本机方法无法运行resolved@H.Brooks,当此代码运行时。我已将其作为MainActivity中的一个方法,但仍会给出相同的错误。@H.Brooks,在以下行捕获异常-'catch(UnsatisfiedLinkError e){System.out.println(“静态块中的未满足链接错误”);e.printStackTrace();}'您能告诉我您是如何尝试实现和使用.so文件的吗?我该怎么做,我应该编辑原始问题并添加图像,还是有办法在注释中发送图像。不太可能。错误消息表明loadLibrary失败,而不是无法使用本机方法resolved@H.Brooks,当此代码运行时。我已将t作为我的MainActivity中的一个方法,仍然会给出相同的错误。@H.Brooks,在以下行捕获异常-'catch(unsatifiedlinkerror e){System.out.println(“静态块中的unsatifiedlinkerror”);e.printStackTrace();}'您能告诉我您是如何尝试实现和使用.so文件的吗?我该怎么做?我应该编辑原始问题并添加图像,还是有办法在评论中发送图像。