Zbar-сканер QR-кода, сбой в Android Studio

Я загрузил из Git последний сканер QR-кода zBar (SDK 0.2). Я пытаюсь реализовать его в своем приложении. Я работаю на Android Studio.

что я сделал:

  1. Я скопировал zBar.jar в папку libs моего проекта.
  2. Я создал *.файлы jar от "amerabi", "amerabi-v7a", " x86 " путем их zip и изменения их формата на *.сосуд.
  3. Я скопировал амераби.банка, amerabi-v7a.jar и х86.jar to libs папка моя Проект.
  4. нет необходимости что-либо менять в gradle, потому что он уже настроен для импорта каждого файла jar из проектов libs. См. ниже:

    dependencies {
        compile 'com.android.support:support-v4:18.0.+'
        compile 'com.crashlytics.android:crashlytics:1.+'
    
        compile fileTree(dir: 'libs', include: '*.jar')
    
        compile project(':FacebookSDK')
        compile project(':actionbarsherlock')
        compile project(':Aviary-SDK')
    }
    
  5. каждый класс формы zbar lib можно увидеть, поэтому я настроил все. Я запускаю ScannerActivity и в onCreate получаю ошибку в этой строке:

    scanner = new ImageScanner();  // this line shows an error
    scanner.setConfig(0, Config.X_DENSITY, 3);
    scanner.setConfig(0, Config.Y_DENSITY, 3);
    

таким образом, реализация 1: 1 такая же, как в Примере.

моя ошибка log:

java.lang.UnsatisfiedLinkError: Couldn't load zbarjni from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/pl.toptof.android.debug-2.apk"],nativeLibraryDirectories=[/data/app-lib/pl.toptof.android.debug-2, /vendor/lib, /system/lib]]]: findLibrary returned null

пожалуйста, помогите мне с этой проблемой. Я не знаю, почему моя Android Studio может видеть lib, но не может использовать его так же, как он используется в Примере.

4 ответов


Я думаю, вы ошиблись в своих структурах банок. Если вы хотите сделать пакет jar из *.поэтому libs вы должны использовать такую структуру:

/ lib / armeabi/*.так что

Это пример структуры каталогов для вашей библиотеки:

lib/
---/armeabi
------/libiconv.so
------/libzbarjni.so

и, конечно, вы должны переименовать окончательный пакет из lib.zip в armeabi.сосуд. В вашем случае вы должны повторить этот процесс для armeabi-v7a и x86.


решение слишком сложное. Что я сделал, чтобы заставить его работать, это использовать файлы jar, уже скомпилированные в примере решения из . Скопируйте их в папку lib и обязательно добавьте в файл gradle. Однако, ваша линия compile fileTree(dir: 'libs', include: '*.jar') следует сделать трюк.


поставить каталогах норм, armeabi-v7a и x86 в подкаталог native-libs в корневой папке проекта. Затем добавьте эти настройки в свой построить.Gradle в:

android {
    // other settings
    sourceSets {
            main {
                jni.srcDirs=[] //to suppress makefiles autogeneration
                jniLibs.srcDirs=['native-libs'] //native *.so in armeabi x86 and mips to include
            }
        }
}

в результате .apk должен иметь собственные библиотеки, включенные сейчас.


вам лучше проверить, есть ли у вас самая новая версия ZBar в зависимостях в вашем приложении.файл gradle. Получение последней версии работало для меня и решало все проблемы, такие как неспособность найти libzbarjni.так и либиконв.так что