为什么我的应用程序一直没有错误而崩溃?

时间:2015-10-02 21:57:56

标签: java android mobile qr-code

所以,我正在尝试将QR扫描仪应用到我的Android应用程序中,而我正在使用Android Studio。用户只需点击(点击)将QR扫描仪调到屏幕上的按钮。此时,用户可以扫描QR代码以获取嵌入的URL,并将其发送到该URL。很简单。

我正在使用[ZBar] [1]库。 我用了这个很棒的[教程] [1]。

我几乎跟着他的教程完全按照他的概述,复制和粘贴。我没有编译错误,应用程序没有任何问题;但是,在运行它时,模拟器会向我发出以下消息:"不幸的是,我的应用程序已停止。"

如果您需要更多信息,请告知我们。

以下是崩溃后logcat输出的内容:

10-02 16:56:26.732  18271-18271/v1.com.example.ggpcoding.myapplication E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: v1.com.example.ggpcoding.myapplication, PID: 18271
    java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/v1.com.example.ggpcoding.myapplication-2/base.apk"],nativeLibraryDirectories=[/data/app/v1.com.example.ggpcoding.myapplication-2/lib/x86, /vendor/lib, /system/lib]]] couldn't find "libzbarjni.so"
            at java.lang.Runtime.loadLibrary(Runtime.java:367)
            at java.lang.System.loadLibrary(System.java:1076)
            at net.sourceforge.zbar.ImageScanner.<clinit>(Unknown Source)
            at v1.com.example.ggpcoding.myapplication.MainActivity.initControls(MainActivity.java:46)
            at v1.com.example.ggpcoding.myapplication.MainActivity.onCreate(MainActivity.java:36)
            at android.app.Activity.performCreate(Activity.java:6237)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
            at android.app.ActivityThread.-wrap11(ActivityThread.java)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:148)
            at android.app.ActivityThread.main(ActivityThread.java:5417)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

这是onCreate函数:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initControls();
}

2 个答案:

答案 0 :(得分:0)

您需要自己加载库。您可以在第一个要使用扫描仪的活动中使用以下代码。

static {
    System.loadLibrary( "iconv" );
}

答案 1 :(得分:0)

您应该为所有CPU架构构建本机库,以确保应用程序在每台设备上运行,并且我认为您根据应用程序运行的设备没有正确的构建。 我不确定,但我认为你应该为x86构建。 您可以使用android NDK构建本机库。