2013-12-11 16 views
9

Ich habe von git neuesten ZBar QR Code Scanner (SDK 0.2) heruntergeladen. Ich versuche es in meiner Anwendung zu implementieren. Ich arbeite an Android Studio.ZBar - QR Code Scanner, stürzt in Android Studio

Was habe ich getan:

  1. I zBar.jar kopiert haben Ordner von meinem Projekt LIBS.
  2. Ich habe * .jar-Dateien von "Amerabi", "Amerabi-v7a", "x86" erstellt, indem ich sie gezippt und ihr Format in * .jar geändert habe.
  3. Ich habe die Dateien amerabi.jar, amerabi-v7a.jar und x86.jar in den libs-Ordner meines Projekts kopiert.
  4. Es ist nicht notwendig, etwas in Gradle zu ändern, da es bereits konfiguriert ist, um jede JAR-Datei aus libs-Projekten zu importieren. Siehe unten:

    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. Jede Klasse Form zBar lib so gesehen werden, kann ich konfiguriert alles haben. Ich betreiben meine ScannerActivity und in onCreate ich Fehler in dieser Zeile:

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

So Implementierung 1: 1 ist das gleiche wie in Beispiel.

Mein Fehlerprotokoll:

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 

Bitte helfen Sie mir mit diesem Problem. Ich weiß nicht, warum mein Android Studio lib sehen kann, aber es nicht auf die gleiche Weise verwenden kann, wie es in Beispiel verwendet wird.

Antwort

13

Ich denke, Sie haben Fehler in Ihren Gläsern Strukturen gemacht. Wenn Sie JAR-Paket machen wollen von * .so Libs sollten Sie diese Art von Struktur verwenden:

/lib/armeabi/*.so

Es ist Verzeichnisstruktur Beispiel für Ihre Bibliothek:

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

und natürlich sollten Sie das endgültige Paket von lib.zip in armeabi.jar umbenennen. In Ihrem Fall sollten Sie diesen Vorgang für armeabi-v7a und x86 wiederholen.

+0

nicht finden Können Sie bitte erarbeiten? Ich kann nicht scheinen, um dies zu arbeiten, und ich habe das gleiche Problem wie @ F1sher –

+6

Ich werde, weil ich das gleiche Problem habe und er mir richtige Antwort geben. Also, wenn Sie Android Studio verwenden, dann erstellen Sie zuerst 2 Ordner "lib". In lib erstellen Sie "armeabi" Ordner. Innerhalb des Armea-Ordners legen Sie die .so-Dateien (libiconv.so und libzbarjni.so) ab. dann erstellen Sie ein Archiv von lib Ordner ... wird zum Beispiel lib.zip sein. Danach müssen Sie es in armeabi.jar umbenennen. Der letzte Schritt besteht darin, Ihr jar in libs zu kopieren und in Großbuchstaben zu kompilieren. –

+0

sogar ich habe das gleiche Problem während der Arbeit an Eclipse, Projekt läuft auf Android-Geräten, aber nicht auf Android TV. Ich bin den obigen Schritten gefolgt, aber die Gläser gehen weg, sobald ich laufe oder das Projekt baue. Irgendwelche Vorschläge ?? –

1

Die Lösung ist zu kompliziert. Was ich getan habe, um es zum Laufen zu bringen, war, die JAR-Dateien zu verwenden, die bereits in der Beispiellösung von this example kompiliert wurden. Kopieren Sie sie in Ihren lib-Ordner und stellen Sie sicher, dass Sie sie auch in der Gradle-Datei hinzufügen. Allerdings sollte Ihre Linie compile fileTree(dir: 'libs', include: '*.jar') den Trick machen.

1

die Verzeichnisse Setzen armeabi, armeabi-V7A und x86 in einem Unterverzeichnis nativer-libs unter dem Stammordner des Projektes aufgerufen. Dann fügen Sie diese Einstellungen auf Ihre build.gradle Datei:

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

Das resultierende APK die nativen Bibliotheken jetzt aufgenommen haben sollte.

1

Sie sollten besser überprüfen, ob Sie die neueste mögliche Version von ZBar in Abhängigkeiten in Ihrer app.gradle-Datei haben. Die neueste Version funktionierte für mich und löste alle Probleme wie libzbarjni.so und libiconv.so

+0

Für mich mit 'kompilieren 'Sie mich.dm7.barcodescanner: zbar: 1.9.3'' Ich bekomme weiterhin den Fehler –

+0

Und haben Sie" kompilieren net.jcip: jcip-annotations: 1.0' "in Ihrer app.gradle ? Ich habe diese plus compileSdkVersion 25, minSdkVersion 16, buildToolsVersion "25.0.2" und es funktionierte für mich. Ich musste nichts extra hinzufügen. – CottaLotties

+0

Ich hatte diese Abhängigkeit nicht, aber jetzt habe ich sie hinzugefügt und das Problem bleibt bestehen. Kannst du deinen gesamten Build teilen, damit ich vergleichen kann? –

Verwandte Themen