ZBar - QR码扫描仪,崩溃在Android Studio
我已经从git下载最新的zBar QR码扫描仪(SDK 0.2)。我正试图在我的应用程序中实现它。我在Android Studio上工作。ZBar - QR码扫描仪,崩溃在Android Studio
我做了什么:
- 我抄zBar.jar到LIBS我的项目的文件夹中。
- 我已经从“amerabi”,“amerabi-v7a”,“x86”创建* .jar文件,并将它们的格式更改为* .jar。
- 我已将amerabi.jar,amerabi-v7a.jar和x86.jar复制到我的项目的libs文件夹中。
-
没有必要更改gradle中的任何内容,因为它已经配置为从libs项目导入每个jar文件。见下:
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') }
-
每个类的形式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的相同的例子所示。
我的错误日志:
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,但不能像使用示例一样使用它。
我想,你在你的罐子结构中犯了错误。如果你想从*。所以库让jar包,你应该使用这种结构:
/lib/armeabi/*.so
这是你的库目录结构例如:
lib/
---/armeabi
------/libiconv.so
------/libzbarjni.so
当然,您应该将最终包从lib.zip重命名为armeabi.jar。在你的情况下,你应该为armeabi-v7a和x86重复这个过程。
该解决方案太复杂。我所做的工作就是使用已在this example的示例解决方案中编译的jar文件。将它们复制到lib文件夹中,并确保也将它们添加到gradle文件中。但是,您的行compile fileTree(dir: 'libs', include: '*.jar')
应该做的伎俩。
把目录armeabi,armeabi-V7A和名为本机库根项目文件夹下的子目录。 然后将这些设置添加到您的的build.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文件应具有本机库现在包括在内。
你最好检查你的app.gradle文件中是否有最新版本的ZBar在依赖关系中。获取最新版本为我工作,并解决了所有问题,如无法找到libzbarjni.so和libiconv.so
对我来说''编译'me.dm7.barcodescanner:zbar:1.9.3''我一直在得到错误 –
你是否在你的app.gradle中编译net.jcip:jcip-annotations:1.0'“ ?我有这些加上compileSdkVersion 25,minSdkVersion 16,buildToolsVersion“25.0.2”,它为我工作。我不必额外添加任何东西。 – CottaLotties
我没有这个依赖,但现在我添加了它,问题依然存在。你能分享你的整个构建,gradle,以便我可以比较吗? –
请你详细说明一下吗?我似乎无法得到这个工作,我有问题,因为我有同样的问题,他给了我正确的答案。@ F1sher –
我会,因为我有同样的问题,他给我正确的答案。所以如果你使用Android Studio,那么首先创建2个文件夹就是“lib”。在lib里面创建“armeabi”文件夹。在armeabi文件夹里放入.so文件(libiconv.so和libzbarjni.so)。然后从lib文件夹中创建一个档案...例如将是lib.zip。之后,您将不得不将其重命名为armeabi.jar。最后一步是将你的jar复制到libs并编译成gradle。 –
即使我在eclipse上工作时也面临同样的问题,项目在android设备上运行,但在android电视上运行。我遵循上述步骤,但一旦我运行或构建项目,罐子就会消失。 有什么建议? –