[英]ZBar - QR Code Scanner, crashing in Android Studio
我从git最新的zBar QR Code Scanner(SDK 0.2)下载了。 我试图在我的应用程序中实现它。 我在Android Studio上工作。
我做了什么:
无需更改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,但不能像在示例中那样使用它。
我想,你在罐子结构中犯了错误。 如果你想从* .so libs制作jar包你应该使用那种结构:
/lib/armeabi/*.so
它是您的库的目录结构示例:
lib/
---/armeabi
------/libiconv.so
------/libzbarjni.so
当然,您应该将最终包从lib.zip重命名为armeabi.jar。 在您的情况下,您应该为armeabi-v7a和x86重复此过程。
解决方案太复杂了。 我所做的得到它的工作,是使用从示例解决方案已编译的jar文件这个例子 。 将它们复制到lib文件夹,并确保也将它们添加到gradle文件中。 但是,你的行compile fileTree(dir: 'libs', include: '*.jar')
应该可以解决问题。
将目录armeabi , armeabi-v7a和x86放在根项目文件夹下名为native-libs的子目录中。 然后将这些设置添加到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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.