2010-05-23 86 views
6

我的應用程序一直運行良好,直到最近的Froyo更新。安裝Android 2.2 SDK後,我可以編譯我的代碼而不會出現任何錯誤。然而,當我運行它,它只是強制關閉:應用程序無法啓動在Android 2.2(Froyo)

這裏的日誌:

05-23 10:15:13.463: DEBUG/AndroidRuntime(423): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<< 

05-23 10:15:13.463: DEBUG/AndroidRuntime(423): CheckJNI is ON 

05-23 10:15:14.193: DEBUG/AndroidRuntime(423): --- registering native functions --- 

05-23 10:15:15.293: DEBUG/AndroidRuntime(423): Shutting down VM 

05-23 10:15:15.303: DEBUG/dalvikvm(423): Debugger has detached; object registry had 1 entries 
05-23 10:15:15.333: 

INFO/AndroidRuntime(423): NOTE: attach of thread 'Binder Thread #3' failed 

05-23 10:15:16.003: DEBUG/AndroidRuntime(431): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<< 
05-23 10:15:16.013: 

DEBUG/AndroidRuntime(431): CheckJNI is ON 

05-23 10:15:16.273: DEBUG/AndroidRuntime(431): --- registering native functions --- 

05-23 10:15:17.392: INFO/ActivityManager(59): Starting activity: Intent { act=android.intent.action.MAIN cat= 

[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.handyapps.easymoney/.EasyMoney } 

05-23 10:15:17.602: DEBUG/AndroidRuntime(431): Shutting down VM 

05-23 10:15:17.662: DEBUG/dalvikvm(431): Debugger has detached; object registry had 1 entries 

05-23 10:15:17.742: INFO/AndroidRuntime(431): NOTE: attach of thread 'Binder Thread #3' failed 

05-23 10:15:17.912: INFO/ActivityManager(59): Start proc com.handyapps.easymoney for activity 

com.handyapps.easymoney/.EasyMoney: pid=438 uid=10035 gids={1006, 1015} 

05-23 10:15:19.032: DEBUG/AndroidRuntime(438): Shutting down VM 

05-23 10:15:19.032: WARN/dalvikvm(438): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
05-23 

10:15:19.062: ERROR/AndroidRuntime(438): FATAL EXCEPTION: main 

05-23 10:15:19.062: ERROR/AndroidRuntime(438): java.lang.RuntimeException: Unable to instantiate application 

com.handyapps.easymoney.EasyMoney: java.lang.ClassCastException: com.handyapps.easymoney.EasyMoney 

05-23 10:15:19.062: ERROR/AndroidRuntime(438):  at android.app.ActivityThread$PackageInfo.makeApplication 

(ActivityThread.java:649) 

05-23 10:15:19.062: ERROR/AndroidRuntime(438):  at android.app.ActivityThread.handleBindApplication 

(ActivityThread.java:4232) 

05-23 10:15:19.062: ERROR/AndroidRuntime(438):  at android.app.ActivityThread.access$3000(ActivityThread.java:125) 

05-23 10:15:19.062: ERROR/AndroidRuntime(438):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2071) 

05-23 10:15:19.062: ERROR/AndroidRuntime(438):  at android.os.Handler.dispatchMessage(Handler.java:99) 

05-23 10:15:19.062: ERROR/AndroidRuntime(438):  at android.os.Looper.loop(Looper.java:123) 

05-23 10:15:19.062: ERROR/AndroidRuntime(438):  at android.app.ActivityThread.main(ActivityThread.java:4627) 

05-23 10:15:19.062: ERROR/AndroidRuntime(438):  at java.lang.reflect.Method.invokeNative(Native Method) 

05-23 10:15:19.062: ERROR/AndroidRuntime(438):  at java.lang.reflect.Method.invoke(Method.java:521) 

05-23 10:15:19.062: ERROR/AndroidRuntime(438):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run 

(ZygoteInit.java:868) 

05-23 10:15:19.062: ERROR/AndroidRuntime(438):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 

05-23 10:15:19.062: ERROR/AndroidRuntime(438):  at dalvik.system.NativeStart.main(Native Method) 

05-23 10:15:19.062: ERROR/AndroidRuntime(438): Caused by: java.lang.ClassCastException: com.handyapps.easymoney.EasyMoney 

05-23 10:15:19.062: ERROR/AndroidRuntime(438):  at android.app.Instrumentation.newApplication(Instrumentation.java:957) 

05-23 10:15:19.062: ERROR/AndroidRuntime(438):  at android.app.Instrumentation.newApplication(Instrumentation.java:942) 

05-23 10:15:19.062: ERROR/AndroidRuntime(438):  at android.app.ActivityThread$PackageInfo.makeApplication 

(ActivityThread.java:644) 

05-23 10:15:19.062: ERROR/AndroidRuntime(438):  ... 11 more 

05-23 10:15:19.082: WARN/ActivityManager(59): Force finishing activity com.handyapps.easymoney/.EasyMoney 

05-23 10:15:19.592: WARN/ActivityManager(59): Activity pause timeout for HistoryRecord{450018f0 

com.handyapps.easymoney/.EasyMoney} 

////////////// Android清單文件////

<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
<uses-permission android:name="android.permission.CAMERA"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-feature android:name="android.hardware.camera" /> 

<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4" /> 
    <application android:icon="@drawable/icon" 
    android:name="@string/app_name" android:label="@string/app_name" 
    android:debuggable="false"> 
    <activity android:name=".EasyMoney" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.NoTitleBar" 
    android:launchMode="singleTask" 
    android:clearTaskOnLaunch="true"> 
    <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".TranList" android:label="@string/app_name" android:theme="@android:style/Theme.Light.NoTitleBar"/> 
    <activity android:name=".TranEdit" android:theme="@android:style/Theme.Light.NoTitleBar" android:windowSoftInputMode="stateAlwaysHidden"/> 
    <activity android:name=".BillReminderEdit" android:theme="@android:style/Theme.Light.NoTitleBar" android:windowSoftInputMode="stateAlwaysHidden"/> 
    <activity android:name=".BillReminderList" android:launchMode="singleTop" android:theme="@android:style/Theme.Light.NoTitleBar"/> 
    <activity android:name=".BudgetList" android:theme="@android:style/Theme.Light.NoTitleBar"/> 
    <activity android:name=".BudgetEdit" android:theme="@android:style/Theme.Light.NoTitleBar" android:windowSoftInputMode="stateAlwaysHidden"/> 
    <activity android:name=".Search" android:theme="@style/CustomDialogTheme" android:windowSoftInputMode="stateAlwaysHidden"/> 
    <activity android:name=".PasscodeEntry" android:theme="@style/CustomDialogTheme" android:windowSoftInputMode="stateAlwaysHidden" android:screenOrientation="portrait"/> 
    <activity android:name=".AccountList" android:theme="@android:style/Theme.Light.NoTitleBar"> 
    </activity> 
    <activity android:name=".AccountEdit" android:theme="@android:style/Theme.Light.NoTitleBar" android:windowSoftInputMode="stateAlwaysHidden"/> 
    <activity android:name=".UserSettingsEdit" android:theme="@android:style/Theme.Light.NoTitleBar" android:windowSoftInputMode="stateAlwaysHidden"/> 
    <activity android:name=".CurrencySettingsEdit" android:theme="@android:style/Theme.Light.NoTitleBar" android:windowSoftInputMode="stateAlwaysHidden"/> 
    <activity android:name=".DisplaySettingsEdit" android:theme="@android:style/Theme.Light.NoTitleBar" android:windowSoftInputMode="stateAlwaysHidden"/> 
    <activity android:name=".BackupSettingsEdit" android:theme="@android:style/Theme.Light.NoTitleBar" android:windowSoftInputMode="stateAlwaysHidden"/> 
    <activity android:name=".CategoryList" android:theme="@android:style/Theme.Light.NoTitleBar" /> 
    <activity android:name=".CategoryEdit" android:theme="@android:style/Theme.Light.NoTitleBar" android:windowSoftInputMode="stateAlwaysHidden"/> 
    <activity android:name=".ExpenseByCategory" android:theme="@android:style/Theme.Light.NoTitleBar"/> 
    <activity android:name=".BalanceReport" android:theme="@android:style/Theme.Light.NoTitleBar"/> 
    <activity android:name=".MonthlyExpenseReport" android:theme="@android:style/Theme.Light.NoTitleBar"/> 
    <activity android:name=".MonthlyIncomeReport" android:theme="@android:style/Theme.Light.NoTitleBar"/> 
    <activity android:name=".MonthlyCashflowReport" android:theme="@android:style/Theme.Light.NoTitleBar"/> 
    <activity android:name=".PhotoList" android:theme="@android:style/Theme.Light.NoTitleBar" /> 
    <activity android:name=".ExpenseByPayee" android:theme="@android:style/Theme.Light.NoTitleBar"/> 
    <activity android:name=".ExpenseBySubCategory" android:theme="@android:style/Theme.Light.NoTitleBar"/> 

    <service android:name="StartAlarm_Service"> 
    <intent-filter> 
    <action android:name="com.handyapps.easymoney.StartAlarm_Service" /> 
    </intent-filter> 
</service> 
<service android:name=".AlarmService_Service" android:process=":remote" /> 
<receiver android:name="StartupIntentReceiver"> 
<intent-filter> 
<action android:name="android.intent.action.BOOT_COMPLETED" /> 
<category android:name="android.intent.category.HOME" /> 
</intent-filter> 
</receiver> 

<receiver android:name=".WidgetProvider" android:label="@string/widget_name"> 
     <intent-filter> 
      <action 
       android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
     </intent-filter> 
     <meta-data 
      android:name="android.appwidget.provider" 
      android:resource="@xml/widget" /> 
    </receiver> 
    <receiver 
     android:name=".WidgetProvider" android:label="@string/widget_name"> 
     <intent-filter> 
      <action 
       android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
       <data android:scheme="easymoney_widget" /> 
     </intent-filter> 
     <meta-data 
      android:name="android.appwidget.provider" 
      android:resource="@xml/widget" /> 
    </receiver> 
    <receiver android:name=".WidgetProvider"> 
     <intent-filter> 
      <action android:name="com.handyapps.easymoney.WIDGET_CONTROL" /> 
      <data android:scheme="easymoney_widget" /> 
     </intent-filter> 
    </receiver> 
</application> 

主STA rtup類是com.handyapps.easymoney.EasyMoney。我在onCreate()方法的開始處放置了一個斷點,但是我發現它甚至沒有到達那裏。不知何故,該應用程序無法在Android 2.2中加載......但它對於以前的所有Android版本都可以很好地工作。一直試圖找到過去兩天的原因,但我完全難住!

+2

如果您在清單文件中使用android:targetSdkVersion =「8」,它仍然會編譯沒有錯誤嗎? – 2010-05-23 12:08:45

+0

看到我對你的自我回答評論爲什麼它在'android:name'上失敗。 – 2010-05-28 07:03:34

回答

-1

ClassCastException

當程序試圖投 一個目的是一類拋出該異常與它是 不兼容。

我會通過代碼並檢查我正在執行的演員。

+0

他說它在主要活動中甚至沒有達到onCreate(),所以他應該在代碼中查找哪裏? – HXCaine 2010-05-23 23:16:48

+0

這實際上是問題所在 - 只是所討論的代碼是清單XML,它將內置啓動代碼設置爲嘗試將不適當的內容無效轉換爲Activity或任何類,以便它可以調用構造函數和onCreate()方法。 – 2012-05-05 15:20:16

3

我找到了解決方案!只需要從manifest中的應用程序標記中刪除android:name屬性...但編譯器應該給出警告或錯誤。

+0

大聲笑,我很驚訝它在2.2之前的工作 - 「android:name」期望一個像com.foo.BarApplication或者只是'.BarApplication'這樣的合格的類名。給它一個類似標籤的值,如@ string/app_name,肯定會失敗。 – 2010-05-28 07:02:48

+0

即使它應該失敗,不應該有某種警告而不是某些神祕的例外嗎?爲什麼類名稱屬性在應用程序標籤中被賦予'name'屬性名稱?所以誤導 – 2010-05-29 05:51:04

+0

我試圖找到什麼樣的麻煩將發生與我的應用程序針對Android 1.5(因爲我沒有與Android 2.2的物理設備),並安裝在Froyo設備,我也發現這個例外,IM非常驚訝,我選擇了警告忠告大聲笑,豎起大拇指! – Jorgesys 2010-06-22 23:25:51