Добавление файла .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, и я добавил библиотеку, перейдя в настройки модуля -> библиотеки и добавив каталог с банкой и каталогом с таким файлом.
- Внутренний class может получить доступ, но не обновлять значения - AsyncTask
- Обновление списка при изменении данных адаптера
- Android FragmentManager BackStackRecord.run бросает NullPointerException
- Android ListView: получить индекс данных видимого элемента
- Преобразование пикселей в sp
- isValidFragment Android API 19
- Не удается разрешить class MapActivity на Android
- Разрешение отклонено (отсутствует разрешение INTERNET?): Но предоставляется разрешение
- Android Volley - BasicNetwork.performRequest: Неожиданный код ответа 400
- Могут ли старые жетоны GCM жить даже после удаления?
- Как можно обнаружить режим самолета на Android?
- Извлечение текста извещных, contentView или contentIntent
- Что заставляет Android ContentResolver.query () вернуть null?
Вы можете добавить предварительно созданные * .so файлы в Android Studio, используя gradle 0.7.2+. Сначала создайте jniLibs в этом месте / app / src / main / location и скопируйте всю папку с * .so файлами (armeabi, armeabi-v7a, mips, x86) в jniLibs.
Чтобы использовать собственную библиотеку (так что файлы), вам нужно добавить некоторые коды в файл «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
У меня была папка libs в моем проекте, в которую я включил внешние библиотеки, добавив строку компиляции fileTree (dir: ‘libs’, include: ‘* .jar’) в зависимости {} в файле сборки gradle.
Затем я создал папку lib и внутри нее была папка armeabi, в которую я вставил все необходимые .so-файлы. Затем я закрепил папку в .zip (структура внутри zip-файла теперь является lib / armeabi / *. Поэтому) Я переименовал ZIP-файл в armeabi.jar и добавил его в папку libs в качестве внешней библиотеки.
Я думаю, что это проблема новой системы построения gradleиентов. Попробуйте решить этот ответ. Существует также ссылка на групповое обсуждение google, которое описывает решение и проблемы более подробно.
splits { abi { enable true reset() include 'x86', 'x86_64', 'arm64-v8a', 'armeabi-v7a', 'armeabi' universalApk false } }
Я получаю этот код из библиотеки facebook fresco