【问题标题】:android developer crash report安卓开发者崩溃报告
【发布时间】:2012-08-02 13:50:29
【问题描述】:

我在 google play 上有一个应用程序。 我制作了一个具有更高版本代码和不同名称的新版本。 在我自己的 android 设备 (v2.3.3) 和模拟器 (v4.0.3) 上对其进行了测试。 到目前为止没有错误,所以我将更新投放市场。

现在第一个错误报告进来了!!!!!! (见下文) 不知道是什么意思。

新的更新是对权限的一点改变,我删除了两个库(jumptap SDK 和用于 admob 中介的 jumptap 适配器)。 删除的权限是:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

将这两个留给 admob 广告:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

错误代码:

 java.lang.RuntimeException: Unable to start activity
 ComponentInfo{com.masked.app/com.masked.app.mainjava}:java.lang.NullPointerException
 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2705)
 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2721)
 at android.app.ActivityThread.access$2300(ActivityThread.java:132)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2071)
 at android.os.Handler.dispatchMessage(Handler.java:99)
 at android.os.Looper.loop(Looper.java:123)
 at android.app.ActivityThread.main(ActivityThread.java:4669)
 at java.lang.reflect.Method.invokeNative(Native Method)
 at java.lang.reflect.Method.invoke(Method.java:521)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:876)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634)
 at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.NullPointerException
 at com.masked.app.mainjava.onCreate(mainjava.java:53)
 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2669)

在第 132 行有“adblockcheck();”可以在这里找到 How to prevent ad blocker from blocking ads on an app ; 第 123 行也在此代码中。

在第 53 行,一个媒体播放器启动 (mp.start();) 并带有启动声音。

究竟是什么问题,为什么我的设备上没有出现错误? 这是我通过 google play 报告的第一个错误,是一个错误有问题还是有更多的开发人员遇到错误并且并不总是关心它们?

完整的Mainjava.java可以在这里下载http://homepage.tudelft.nl/78u5u/main.zip

编辑: R.raw.start 是一个 mp3 文件。

【问题讨论】:

    标签: android error-handling


    【解决方案1】:

    显然,您的 MediaPlayer mp 实例为空。表示MediaPlayer.create方法返回null。

    正如create方法的android文档中所说:

    Returns
      a MediaPlayer object, or null if creation failed
    

    我认为,由于缺少所需的编解码器等,android 无法为您创建 MediaPlayer。 R.raw.start 文件的格式是什么?您可以尝试使用格式。 不管怎样,你需要优雅地处理这个异常。

    另外,如前所述,我建议您使用 ACRA。它可以帮助您快速解决问题。根据我的过期,Android 用户不喜欢发送错误报告。不到 10% 的错误会报告给 google play。

    更新: ACRA 足够好,但并不完美,因为阻塞。这意味着如果应用程序刚刚崩溃并且用户的互联网连接速度很慢,您可以获得ANR 消息。想象一下:用户认为应用程序刚刚挂起,并决定等待应用程序响应,然后收到“抱歉,应用程序崩溃”消息。在使用 ACRA 之前,您必须找到通过后台服务等发送报告的方法。

    此外,Google Docs - 发送错误的默认后端 - 很糟糕。强烈建议使用另一个后端。如果您的应用程序足够小,并且您认为一个月内收到的错误报告少于 500 个,您可以尝试专有的BugSense,它支持 ACRA。

    【讨论】:

    • 是的,我想,你可以。但是,您至少必须通知您的用户出现问题。是的,我认为,它与此更新无关。另外,您是否检查了来自哪个应用版本的错误报告?
    • 它来自新版本。音乐文件是 mp3
    • 但是返回 null 的媒体播放器肯定是这里的问题吗?因为第一个错误行是 132?
    • 第一。在我的 mainjava.java 实例的第 132 行是 } 字符。其次,我在您的错误堆栈跟踪中找不到 132 行(我在 ActivityThread.access$2300(ActivityThread.java:132) 中看到了一个)。第三,是的,我绝对确定使您的应用程序崩溃的 NullPointerException 从 mainjava.java:53 (mp.start();)
    【解决方案2】:

    如果不看到(至少)你在 com.masked.app.mainjava 中的整个 onCreate() 方法,将很难判断到底发生了什么。听起来您没有初始化媒体播放器。

    如果其他人在崩溃报告方面遇到问题,这是获得有关 Android 的更好反馈的绝佳方式是这个项目:http://code.google.com/p/acra/

    编辑:

    您的问题几乎肯定是由编解码器问题引起的(由于文件类型/格式,您的设备无法播放给定资源)。它是什么类型的声音文件?

    您可以通过更改此块来解决您的问题:

    if (startsoundint == 1){
        MediaPlayer mp = MediaPlayer.create(Mainjava.this, R.raw.start);
        if (mp != null) // null check
        {
            mp.start();
        }
    }
    

    是的,这意味着它可能不是一个新错误,除非您更改了声音文件。

    【讨论】:

    • 在问题末尾添加了完整的java(右键单击,另存为)
    • 我在尝试保存或查看该链接时收到 403.1 Forbidden(IIS Web 服务器错误)。
    • ACRA 很棒,但如果您连接 ACRA 以向 BugSense (bugsense.com) 发送崩溃报告,您将免费获得很棒的摘要和可视化信息。 (除了作为一个快乐的客户之外,我不隶属于他们)
    • 这可能是正确的答案,添加 else{toast to user} 以通知用户。但是返回 null 的媒体播放器肯定是这里的问题吗?因为第一个错误行是 132?
    • 我仍然对这个错误感到惊讶,他的智能手机无法播放 mp3 文件...(关于编解码器问题)
    猜你喜欢
    • 2014-04-23
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多