无法在Android Studio中添加* .so库。 JniLibs目录不起作用

时间:2019-07-05 11:42:43

标签: android android-studio .so pcsc

我对问题的答案做了很多研究,但没有发现任何东西。 我无法在项目中添加.so库。

我将库放在/ app / src / main / jniLibs / arm64-v8a中。该项目将完成,但是在执行时会出现以下错误。

谢谢所有答案。

Structure of directorys is here。 arm64-v8a是我的系统的正确文件夹。

build.gradle:

public static function getModelByTable($table)
    {
        if (!$table) return false;
        $model = false;
        switch ($table) {
            case 'faq':
                $model = Faq::class;
                break;
            case 'faq_items':
                $model = FaqItems::class;
                break;
        }
        if ($model) {
            try {
                $model = app()->make($model);
            } catch (\Exception $e) {

            }
        }
        return $model;
    }

日志:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.vtas_kassenterminal"
        minSdkVersion 27
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/ASL2.0'
        exclude 'org/apache/http/version.properties'
        exclude 'org/apache/http/nio/version.properties'
        exclude 'org/apache/http/client/version.properties'
        exclude 'org.apache.http.impl.nio.DefaultHttpServerIODispatch'
    }
    productFlavors {
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.squareup.okhttp3:okhttp:3.9.1'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation files('libs/acssmc-1.1.4.jar')
    implementation 'org.jetbrains:annotations-java5:15.0'
    implementation 'com.android.volley:volley:1.1.0'
}

2 个答案:

答案 0 :(得分:0)

这意味着 libpcsclite.so arms64-v8a 文件夹中找不到。尝试删除.so文件中的多余字符 .1.0.0 (我在图片中看到了此内容)

如果上述解决方案不起作用,请遵循以下内容。

.so文件不仅可以在 arms64-v8a 文件夹中使用。将您的.so文件添加到 armeabi-v7a 目录中。文件夹名称取决于电话硬件(可能是处理器)。

.so文件对于特定文件夹(例如 arms64-v8a armeabi-v7a 等)可能会有所不同。通常,最大的设备保护范围 armeabi-v7a

答案 1 :(得分:0)

您应该编写以上代码,以便gradle能够在项目的jniLibs文件夹中找到“ .so”文件。

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