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