47

我现在使用 PhoneGap 开发 Android 应用程序。最近,当我尝试在 HTML 页面之间切换时,应用程序关闭,并且在 LogCat 中出现以下错误:

12-24 15:43:39.237: A/libc(23631): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 23631 (.example.app)

我在谷歌上搜索了一下这个错误,我的理解是它与设备的内存有关。我找到了一些解决方案,但并没有意识到我是如何在 PhoneGap 中实现它们的。

这里有人遇到过这个错误吗?我能做些什么来解决这个问题?

谢谢 :)

4

9 回答 9

44

如果您编写(或正在使用)一个插件,该插件又通过 NDK 使用本机 C/C++ 代码,这可能表明该本机代码中存在错误。

否则,这是您正在测试的设备或模拟器的固件中的错误。

如果您可以在模拟器、具有原始 ROM 的 Nexus 设备或来自不同制造商的各种设备上重现此问题,则可能是 Android 本身的错误。在这种情况下,请创建一个可以重现错误的示例项目,并将其与整个堆栈跟踪一起发布到http: //b.android.com,Android 操作系统问题跟踪器。

如果您只在一台设备或一个第三方 ROM 上遇到此问题,这可能是一个更具体的错误——最好的办法是联系设备制造商或 ROM 发行商并告知您的症状。

于 2012-12-24T16:06:48.320 回答
17

我在 xhdpi Nexus 7 上遇到了类似的错误,但在我的旧手机上一切正常。我的问题是在更新带有许多小按钮的大型 GridView 时发生的。

A/libc(7410): Fatal signal 11 (SIGSEGV) at 0xbe8a8000 (code=1), thread 7410

我认为这不是您的问题,因为您的 PC 为 0,而我的 PC 为 0xbe8a8000,但它很容易尝试并且解决了我的问题,所以我将发布它以防其他人来这里寻找 SEGV 解决方案。
https://github.com/MasDennis/Rajawali/issues/313上有一个关于类似问题的讨论,有人提到他们有同样的问题,关闭硬件加速为他们解决了这个问题。这很容易尝试,它解决了我的问题。
在 Android 清单应用程序中添加:

android:hardwareAccelerated="false"

希望这对其他人有帮助...

于 2015-01-06T03:53:44.113 回答
11

我刚刚在我正在从事的项目中遇到了同样的问题。事实证明,我在尝试实例化 Activity 时加载了大量图像和声音,导致应用程序内存不足。您的程序是否使用大量内存密集型资产?你能完全减小它们的尺寸吗?

在我的例子中,LogCat 在行前有一个绿色的堆栈跟踪(INFO 级日志记录)Fatal signal 11 (SIGSEGV)。堆栈跟踪是OutOfMemoryException在应用程序为Activity我启动时加载资产的时候。所以我拉起我的drawables(我的程序有很多),编辑它们以减小它们的文件大小,然后再试一次。虫子消失了。你可以看看你的 LogCat 输出是否和我的一样,看看你是否有类似的问题:

01-15 05:20:40.462: E/dalvikvm-heap(4513): Out of memory on a 3145744-byte allocation.
01-15 05:20:40.462: I/dalvikvm(4513): "main" prio=5 tid=1 RUNNABLE
01-15 05:20:40.462: I/dalvikvm(4513):   | group="main" sCount=0 dsCount=0 obj=0x4158b6a0 self=0x41001a60
01-15 05:20:40.462: I/dalvikvm(4513):   | sysTid=4513 nice=0 sched=0/0 cgrp=apps handle=1074673744
01-15 05:20:40.462: I/dalvikvm(4513):   | schedstat=( 0 0 0 ) utm=41 stm=20 core=1
01-15 05:20:40.462: I/dalvikvm(4513):   at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
01-15 05:20:40.462: I/dalvikvm(4513):   at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:592)
01-15 05:20:40.462: I/dalvikvm(4513):   at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:445)
01-15 05:20:40.462: I/dalvikvm(4513):   at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:781)
01-15 05:20:40.462: I/dalvikvm(4513):   at android.content.res.Resources.loadDrawable(Resources.java:1963)
01-15 05:20:40.462: I/dalvikvm(4513):   at android.content.res.Resources.getDrawable(Resources.java:672)
01-15 05:20:40.462: I/dalvikvm(4513):   at com.kbi.speeddraw.lite.game.drawables.character.ExplodingCharacterDrawable.<init>(ExplodingCharacterDrawable.java:27)
<!-- snip -->
01-15 05:20:40.462: I/dalvikvm(4513):   at com.kbi.gameengine.api.gameactivity.GameActivity.onCreate(GameActivity.java:80)
01-15 05:20:40.472: I/dalvikvm(4513):   at android.app.Activity.performCreate(Activity.java:5048)
01-15 05:20:40.472: I/dalvikvm(4513):   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
01-15 05:20:40.472: I/dalvikvm(4513):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2052)
01-15 05:20:40.472: I/dalvikvm(4513):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2113)
01-15 05:20:40.472: I/dalvikvm(4513):   at android.app.ActivityThread.access$700(ActivityThread.java:139)
01-15 05:20:40.472: I/dalvikvm(4513):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1224)
01-15 05:20:40.472: I/dalvikvm(4513):   at android.os.Handler.dispatchMessage(Handler.java:99)
01-15 05:20:40.472: I/dalvikvm(4513):   at android.os.Looper.loop(Looper.java:137)
01-15 05:20:40.472: I/dalvikvm(4513):   at android.app.ActivityThread.main(ActivityThread.java:4918)
01-15 05:20:40.472: I/dalvikvm(4513):   at java.lang.reflect.Method.invokeNative(Native Method)
01-15 05:20:40.472: I/dalvikvm(4513):   at java.lang.reflect.Method.invoke(Method.java:511)
01-15 05:20:40.472: I/dalvikvm(4513):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)
01-15 05:20:40.472: I/dalvikvm(4513):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
01-15 05:20:40.472: I/dalvikvm(4513):   at dalvik.system.NativeStart.main(Native Method)
01-15 05:20:40.472: A/libc(4513): Fatal signal 11 (SIGSEGV) at 0x00000be0 (code=1), thread 4513 (.speeddraw.lite)
01-15 05:20:40.472: A/libc(4513): Fatal signal 11 (SIGSEGV) at 0x00180500 (code=1), thread 4527 (.speeddraw.lite)
于 2013-01-15T11:40:30.517 回答
5

以下 Google Plus 帖子解决了我的问题:

基本上,问题与 9 个补丁文件中的光学界限有关。就我而言,我使用的是从 Holo Theme 复制的较新的 9patches。如链接中所述,此新补丁在旧版本的 android 中无效

于 2014-03-26T21:47:48.320 回答
5

在我的情况下检查 OutofMemory 问题我在三星 S3 上收到此错误,并且用于在启动 Activity 上管理大量图像。我在没有解决方案的情况下搜索了很多响应,因为我根本没有 EditText 或输入(实际上,我不知道为什么错误显示可扩展字符串零长度......而不是像 OutOfMemory 这样的其他东西等),然后我意识到按分辨率排序的图像位于错误的文件夹中并且尺寸过大,并且在天空中堆积。祝你好运

于 2013-10-30T00:39:56.363 回答
3

确保您拥有资产目录下的所有资源图像。我遇到了这个问题,结果发现我的一张图片丢失了。一旦我将图像放回资产目录下,一切都很好。

于 2013-04-11T06:55:15.603 回答
1

使用这个... options.headers = { "Connection":"close" };

于 2014-06-06T09:38:11.250 回答
1

以下内容对我来说可以摆脱 webview 中的错误:

webView.freeMemory();

或者

webView.clearCache(true);

第二个选项会减慢您的应用程序。

于 2016-06-13T15:30:23.307 回答
0

对我来说,问题出在 chrome webview 中。我禁用 chrome 并启用 Android webview。这对我来说可以。

于 2019-12-26T05:16:16.723 回答