2012-08-02 148 views
1

我有一個谷歌播放應用程序。 我用更高的版本代碼和不同的名稱制作了新版本。 在我自己的android設備(v2.3.3)和一個模擬器(v4.0.3)上進行了測試。 迄今爲止沒有錯誤,所以我把更新放在市場上。android開發者崩潰報告

現在第一個錯誤報告進來!!!!! (見下) 我不知道這是什麼意思。

新的更新是權限中的一點變化,我刪除了兩個庫(用於admob中介的jumptap SDK和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();)。

究竟是什麼問題,爲什麼我沒有在我的設備上看到錯誤? 這是我第一次通過谷歌播放錯誤報告,是一個錯誤有問題,還是有更多的開發人員遇到錯誤,並不總是關心他們?

全部Mainjava.java可以在這裏下載http://homepage.tudelft.nl/78u5u/main.zip

編輯: R.raw.start是一個MP3文件。

+0

[Android庫捕獲和報告崩潰](https://github.com/ajitsing/Sherlock) – 2017-04-26 07:34:28

回答

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(); 
    } 
} 

是的,這意味着它可能不是一個新的bug,除非你改變了聲音文件。

+0

在問題的末尾添加了完整的java(右鍵單擊,保存爲) – John 2012-08-02 14:17:01

+0

我得到一個403.1禁止(IIS Web服務器錯誤),當我嘗試保存或查看該鏈接。 – xbakesx 2012-08-02 14:19:26

+0

oke,將其更改爲zip文件。現在明白了? – John 2012-08-02 14:29:09

2

顯然,您的MediaPlayer mp實例爲空。這意味着MediaPlayer.create方法返回null。

如機器人documenation說了create方法:

Returns 
    a MediaPlayer object, or null if creation failed 

我認爲,機器人不能爲你創建的MediaPlayer怎麼一回事,因爲缺乏必需的編解碼器或等。什麼是R.raw.start文件的格式?你可以嘗試玩格式。不管怎樣,你都需要很好地處理這個異常。

另外,如前所述,我建議您使用ACRA。它可以幫助您快速解決問題。根據我的期望,Android用戶不喜歡發送錯誤報告。少於10%的錯誤報告給谷歌播放。

更新: ACRA很好,但並不完美,因爲阻塞。這意味着如果應用程序剛剛崩潰並且用戶的Internet連接速度較慢,則可以獲得ANR消息。假設:用戶認爲應用程序只是掛起,並決定等待應用程序的響應,然後得到「對不起,應用程序崩潰」的消息。在使用ACRA之前,您必須找到通過後臺服務等方式發送報告的方式。

此外,Google文檔 - 用於發送錯誤的默認後端 - 非常糟糕。強烈建議使用另一個後端。如果您的應用程序足夠小,並且您認爲一個月內您將收到的錯誤報告少於500個,則您可以嘗試專有的BugSense,它支持ACRA。

+0

我可以添加如下內容:如果null比不發聲??? – John 2012-08-02 14:53:33

+0

和這個錯誤是不是新的東西,所以不涉及更新? – John 2012-08-02 14:54:13

+0

是的,我想,你可以。但是,您至少必須通知您的用戶出現問題。 是的,我認爲這與這次更新無關。 另外,你是否檢查哪個應用程序版本錯誤報告來了? – pepyakin 2012-08-02 15:03:36