为啥我的应用程序一直崩溃而没有任何错误?

Posted

技术标签:

【中文标题】为啥我的应用程序一直崩溃而没有任何错误?【英文标题】:Why does my app keep crashing without any errors?为什么我的应用程序一直崩溃而没有任何错误? 【发布时间】:2015-10-02 21:57:56 【问题描述】:

所以,我正在尝试在我的 android 应用程序中实现 QR 扫描仪,并且我正在使用 Android Studio。用户只需轻敲(点击)一个按钮,该按钮将调用 QR 扫描仪到屏幕上。此时,用户可以扫描嵌入 URL 的 QR 码,并将被发送到该 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();

【问题讨论】:

如果您的应用程序崩溃,则会出现 logcat 错误 - 请将其添加到问题中。 请向我们展示创建过程 你肯定有一个错误,它通常与尝试加载使用 JNI 的库有关。搜索“java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader”,您会在 SO 上找到处理此错误的各种答案。 注意错误信息:couldn't find "libzbarjni.so"。你把那个库放在它所属的地方了吗? 是的,所有必需的库都在我的应用程序的 libs 文件夹中。 【参考方案1】:

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

static 
    System.loadLibrary( "iconv" );

【讨论】:

【参考方案2】:

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

【讨论】:

请看这个答案***.com/questions/27186726/…

以上是关于为啥我的应用程序一直崩溃而没有任何错误?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的代码会崩溃?

为啥崩溃会随着“僵尸对象”而消失?

为啥我的 Erlang 应用程序崩溃了?

为啥我的 unwind segue 会使我的应用程序崩溃?

Android - 看似无害的布局会导致应用在短暂使用后崩溃而没有任何错误

React Native 应用程序崩溃而没有任何错误日志