2010-05-23 4 views
6

Ứng dụng của tôi đã chạy ổn cho đến bản cập nhật Froyo gần đây. Sau khi cài đặt Android 2.2 SDK, tôi có thể biên dịch mã của mình mà không gặp bất kỳ lỗi nào. Tuy nhiên, khi tôi chạy nó, nó chỉ buộc đóng cửa:Ứng dụng không thể khởi động được ở Android 2.2 (Froyo)

Dưới đây là nhật ký:

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 MANIFEST FILE ////

<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> 

Các sta chính lớp rtup là com.handyapps.easymoney.EasyMoney. Tôi đã đặt một điểm ngắt ở đầu phương thức onCreate() nhưng tôi phát hiện ra nó thậm chí không đạt tới đó. Bằng cách nào đó, ứng dụng không thể được tải trong Android 2.2 ... nhưng nó hoạt động hoàn toàn tốt cho tất cả các phiên bản Android trước đó. Đã cố gắng tìm ra nguyên nhân trong 2 ngày vừa qua nhưng tôi hoàn toàn bối rối !!

+2

Hiện nó vẫn biên dịch mà không có lỗi nếu bạn sử dụng android: targetSdkVersion = "8" trong tệp kê khai? –

+0

Xem nhận xét của tôi về câu trả lời của bạn về lý do tại sao nó thất bại trên 'android: name'. –

Trả lời

-1

Từ ClassCastException:

Ném khi một chương trình cố gắng đúc một một đối tượng để một kiểu mà nó là không tương thích.

Tôi sẽ xem xét mã và kiểm tra các phôi tôi đang thực hiện.

+0

Anh ấy đã nói nó thậm chí không đạt được onCreate() trong hoạt động chính, vậy anh ta nên tìm mã ở đâu? – HXCaine

+0

Điều này thực sự là vấn đề - nó chỉ là mã trong câu hỏi là XML biểu hiện, được thiết lập mã khởi động được xây dựng trong để cố gắng một diễn viên không hợp lệ của một cái gì đó không phù hợp vào một hoạt động hoặc bất cứ lớp nào để nó có thể gọi các nhà xây dựng và phương thức onCreate() của chúng. –

3

Tôi đã tìm thấy giải pháp! Chỉ cần xóa thuộc tính android:name khỏi thẻ ứng dụng trong manifest ... nhưng trình biên dịch phải có cảnh báo hoặc lỗi.

+0

lol, tôi ngạc nhiên khi nó hoạt động trước 2.2 - 'android: name' mong đợi một tên lớp đủ điều kiện như' com.foo.BarApplication' hoặc chỉ '.BarApplication'. Cung cấp cho nó một giá trị giống như nhãn như '@ string/app_name' bị ràng buộc thất bại. –

+0

ngay cả khi nó phải thất bại, không nên có một số loại cảnh báo thay vì một số ngoại lệ khó hiểu? Và tại sao một thuộc tính tên lớp được đặt tên thuộc tính 'tên' trong thẻ ứng dụng? Vì vậy, gây hiểu lầm –

+0

Tôi đã cố gắng tìm loại rắc rối sẽ xảy ra với ứng dụng của tôi được nhắm mục tiêu đến android 1.5 (vì tôi không có thiết bị vật lý có Android 2.2) và đang được cài đặt trong thiết bị Froyo, tôi cũng tìm thấy ngoại lệ này rất ngạc nhiên khi tôi chọn lời khuyên cảnh báo lol, ngón tay cái lên! – Jorgesys