Подтвердить что ты не робот

Добавление файла .so в Android Studio

Я пытаюсь добавить внешнюю библиотеку Scandit. Я продолжаю получать эту ошибку:

    java.lang.UnsatisfiedLinkError: Couldn't load scanditsdk-android-3.3.1 from loader dalvik.system.PathClassLoader[dexPath=/data/app/com.clover.barcode2-1.apk,libraryPath=/data/app-lib/com.clover.barcode2-1]: findLibrary returned null
    at java.lang.Runtime.loadLibrary(Runtime.java:365)
   .....

Я предполагаю, что это потому, что я не правильно включаю файл .so, который поставляется с библиотекой, но я не могу понять, как это сделать.

Я использую Android Studio, и я добавил библиотеку, перейдя в настройки модуля → библиотеки и добавив каталог с банкой и каталогом с таким файлом.

4b9b3361

Ответ 1

Вы можете добавить предварительно созданные *.so файлы в Android Studio с помощью gradle 0.7.2+. Сначала создайте jniLibs в этом месте /app/src/main/location и скопируйте всю папку с *.so файлами (armeabi, armeabi-v7a, mips, x86) в jniLibs.

enter image description here

Ответ 2

Чтобы использовать собственную библиотеку (так что файлы) Вам нужно добавить некоторые коды в файл "build.gradle".

Этот код предназначен для очистки каталога "armeabi" и копирования файлов "so" в "armeabi", в то время как "чистый проект".

task copyJniLibs(type: Copy) {
    from 'libs/armeabi'
    into 'src/main/jniLibs/armeabi'
}
tasks.withType(JavaCompile) {
    compileTask -> compileTask.dependsOn(copyJniLibs)
}
clean.dependsOn 'cleanCopyJniLibs'

Мне говорили о нижеследующем. https://gist.github.com/pocmo/6461138

Ответ 3

У меня была папка с libs в моем проекте, в которую я включил внешние библиотеки, добавив строку compit fileTree (dir: 'libs', include: '*.jar') в зависимости {} в файле сборки gradle.

Затем я создал папку lib и внутри нее - папку armeabi, в которую я вставил все необходимые .so файлы. Затем я закрепил папку в .zip(структура внутри zip файла теперь является lib/armeabi/*.) Я переименовал ZIP файл в armeabi.jar и добавили его в папку libs в качестве внешней библиотеки.

Ответ 4

Я думаю, что это проблема новой системы сборки gradle. Попробуйте решить этот ответ. Существует также ссылка на групповое обсуждение google, в котором описывается решение и проблемы более подробно.

Ответ 5

splits {
    abi {
        enable true
        reset()
        include 'x86', 'x86_64', 'arm64-v8a', 'armeabi-v7a', 'armeabi'
        universalApk false
    }
}

Я получаю этот код из библиотеки фрески facebook