1

我在 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();” 可以在这里找到 如何防止广告拦截器阻止应用程序上的广告;第 123 行也在此代码中。

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

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

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

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

4

2 回答 2

2

显然,您的MediaPlayer mp实例为空。这意味着该MediaPlayer.create方法返回null。

如创建方法的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。

于 2012-08-02T14:45:30.703 回答
1

如果不查看(至少)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();
    }
}

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

于 2012-08-02T14:02:53.137 回答