4

我正在使用最新的 Android Studio 0.2.6 和最新的 ZBar Android SDK。到目前为止我做了什么:

  1. 创建了一个名为 QRTest 的全新项目

  2. 在我的项目中创建了一个名为 libs 的文件夹

  3. 将Zbar libs目录的内容放入我的项目文件夹中

  4. 右键单击我项目中的 zbar.jar 文件并添加为库

  5. 在我的 build.gradle 文件中,将其编辑为现在:

    依赖项 { compile 'com.android.support:support-v4:13.0.0' 编译文件('libs/zbar.jar') }

  6. 基本上将示例代码从 ZBar android SDK 示例复制到我自己的项目中。

  7. 该项目编译并运行良好(0 个错误,0 个警告),但它在运行时崩溃。日志显示:

09-01 16:06:02.026: W/dalvikvm(7050): 异常 Ljava/lang/UnsatisfiedLinkError; 初始化 Lnet/sourceforge/zbar/ImageScanner 时抛出;

09-01 16:06:02.036:E/AndroidRuntime(7050):原因:java.lang.UnsatisfiedLinkError:无法加载库:link_image[1891]:209 无法为“libzbarjni.so”加载所需的库“libiconv.so” ' (load_library[1093]: 找不到库 'libiconv.so')

09-01 16:06:02.036: E/AndroidRuntime(7050): at net.sourceforge.zbar.ImageScanner.(未知来源)

查看我的 MainActivity 中的代码,它似乎在这里死了:

 /* Instance barcode scanner */
 scanner = new ImageScanner();

这似乎暗示我不知何故没有正确导入我的 Zbar 库文件。任何有关如何启动和运行这个非常基本的示例的帮助将不胜感激!

需要注意的是,如果我使用 Android Studio 从 ZBar Android SDK 示例中导入一个新项目,它可以编译并运行良好。但是,它使用的是旧的 ant 构建系统。我宁愿使用新的 gradle 构建系统,所以我试图将 ZBar 导入一个新的 Android 0.2.6 项目。谢谢!

另一个注意事项:我尝试将我的构建 gradle 修改为此处接受的答案:如何更改 Gradle 中的 libs 目录?它没有用。

在此处输入图像描述

4

2 回答 2

12

解决方案:

  1. 将 zbar.jar 添加到 app/libs

  2. 在 src/main 下创建一个名为“jniLibs”-Java Native Interface (JNI) 的文件夹,并将文件夹 armeabi-v7a、armeabi 和 x86 复制到 src/main/jniLibs 中。

文件结构如下:

src/main/jniLibs/armeabi-v7a
src/main/jniLibs/armeabi
src/main/jniLibs/x86

  1. 转到文件 > 项目结构 > 应用程序 > 依赖项 > 将 support-v4 添加到项目中
于 2015-02-25T09:29:15.337 回答
3

您应该将 *.so 库添加到您的项目中。如果您使用 Android Studio 和 Gradle,则有点复杂,因为您需要将库打包到 jar 中。在此处查看我的答案:ZBar - QR 码扫描仪,在 Android Studio 中崩溃以查看更多详细信息。

于 2013-12-11T20:19:33.280 回答