2012-07-18 205 views
0

我的Android應用程序是Cool閱讀器的自定義版本。當我從eclipse運行應用程序或在手機上調試應用程序時,它運行良好。但是當我簽署它時,將其導出,安裝並從我的手機運行它會崩潰。Android應用程序導出時崩潰

在logcat中,我看到應用程序崩潰之前的情況如下:

07-17 21:40:40.371: D/Zygote(1218): Process 3136 terminated by signal (11) 
07-17 21:40:40.371: E/InputDispatcher(1331): channel '40b7d8a8 com.myCustomApp/org.coolreader.CoolReader (server)' ~ Consumer closed input channel or an error occurred. events=0x8 
07-17 21:40:40.371: E/InputDispatcher(1331): channel '40b7d8a8 com.myCustomApp/org.coolreader.CoolReader (server)' ~ Channel is unrecoverably broken and will be disposed! 
07-17 21:40:40.451: D/dalvikvm(1331): GC_FOR_MALLOC freed 758K, 35% free 9419K/14279K, external 2060K/2410K, paused 85ms 
07-17 21:40:40.451: I/WindowManager(1331): WIN DEATH: Window{40b7d8a8 com.myCustomApp/org.coolreader.CoolReader paused=false} 
07-17 21:40:40.451: I/ActivityManager(1331): Process com.myCustomApp (pid 3136) has died. 
07-17 21:40:40.471: E/ActivityManager(1331): fail to set top app changed! 

更新: 如果你不知道有關CoolReader(開源項目中,我使用),它JNI代碼,有proGuard配置,並使用ndk。它也有普通的Java代碼。我對jni/ndk或任何低級c \ C++代碼沒有太多的經驗,所以我不確定我在那裏可以做什麼。

但最重要的是,它從eclipse運行時工作正常,但導出的版本自行關閉。

+0

該應用程序會產生大量的日誌消息。如果你想要所有的消息,我可以提供。非常感謝! – harsimranb 2012-07-18 04:47:17

+1

有幾個問題:關於缺少權限的日誌消息中的任何內容?你使用任何JNI代碼?如果它在調試模式下在手機上工作,但不在導出後,我還會懷疑ProGuard配置問題。您是否啓用了ProGuard?如果是這樣,作爲測試,請嘗試關閉並導出。 – 2012-07-18 04:56:05

+0

我已更新問題回答你的問題。沒有權限相關的消息,如果有的話,我不認爲它會從eclipse運行。我會考慮關閉ProGuard配置(不知道它是什麼,所以將做一些研究) – harsimranb 2012-07-18 14:17:04

回答

5

由於去除ProGuard的清除了碰撞,有兩種選擇:

  1. 禁用的ProGuard
  2. 告訴ProGuard保持類/方法/變量,它(錯誤地)排除。

一件事是嘗試以下規則添加到您的ProGuard配置:

-keepclasseswithmembers class * { 
    native <methods>; 
} 

這將告訴ProGuard保留任何具有本地代碼。如果問題在於ProGuard正在刪除不會從Java調用的本地方法,則應該解決該問題。

另一個問題可能是ProGuard正在移除僅由本機代碼調用的Java回調方法。你可以把所有這些首先命名它們都使用一個標準的命名模式(例如,<something>Callback),然後將這樣的規則:如果問題類變量被刪除

-keepclasseswithmembers class * { 
    *** *Callback(...); 
} 

,你必須明確地列舉那些:

-keep class com.example.MyClass { 
    *** aFieldName; 
} 

您可能能夠找到什麼ProGuard的可能是通過檢查在運行時是ProGuard的生成usage.txt文件錯誤地刪除其他線索。

+0

我會試一次3我回到家,並讓你知道:) – harsimranb 2012-07-18 20:49:11