簡體   English   中英

Android App由於代碼錯誤而崩潰,不了解logcat消息

[英]Android App crashing due to error in code, don't understand logcat messages

我正在嘗試為Android的這個源代碼工作,它運行完美,直到我將應用程序重構為不同的包名稱。 包瀏覽器中沒有顯示錯誤,當我在調試模式下運行時,這是我在logcat中得到的:

09-04 21:57:07.544: INFO/ActivityManager(58): Starting activity: Intent { cmp=com.dalimited.zs/.Snake }
09-04 21:57:07.683: DEBUG/AndroidRuntime(387): Shutting down VM
09-04 21:57:07.683: WARN/dalvikvm(387): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
09-04 21:57:07.734: ERROR/AndroidRuntime(387): FATAL EXCEPTION: main
09-04 21:57:07.734: ERROR/AndroidRuntime(387): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dalimited.zs/com.dalimited.zs.Snake}: android.view.InflateException: Binary XML file line #21: Error inflating class com.example.android.snake.SnakeView
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at android.os.Looper.loop(Looper.java:123)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at android.app.ActivityThread.main(ActivityThread.java:4627)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at java.lang.reflect.Method.invokeNative(Native Method)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at java.lang.reflect.Method.invoke(Method.java:521)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at dalvik.system.NativeStart.main(Native Method)
09-04 21:57:07.734: ERROR/AndroidRuntime(387): Caused by: android.view.InflateException: Binary XML file line #21: Error inflating class com.example.android.snake.SnakeView
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at android.app.Activity.setContentView(Activity.java:1647)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at com.dalimited.zs.Snake.onCreate(Snake.java:50)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     ... 11 more
09-04 21:57:07.734: ERROR/AndroidRuntime(387): Caused by: java.lang.ClassNotFoundException: com.example.android.snake.SnakeView in loader dalvik.system.PathClassLoader[/data/app/com.dalimited.zs-1.apk]
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at android.view.LayoutInflater.createView(LayoutInflater.java:466)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
09-04 21:57:07.734: ERROR/AndroidRuntime(387):     ... 20 more

我的問題是:這個logcat告訴我什么? 我在哪里查看我的代碼以解決我的問題? 最后是否有可用的信息來學習如何閱讀logcat?

引起:android.view.InflateException:二進制XML文件行#21:錯誤膨脹類com.example.android.snake.SnakeView

看看你的布局文件。 您正在嘗試創建CustomView。 您的SnakeView類是否擴展了View?

您可以參考以下鏈接: http//www.anddev.org/creating_custom_views_-_the_togglebutton-t310.html

logcat的技巧是查看第一個主要錯誤(不縮進不是以“at”開頭並且位於列表的頂部)然后確保你可以讀取整行。 98%的時間它會告訴你究竟要查看哪一行,並且通常會給出一些谷歌可搜索的錯誤提示。 在您的情況下,行讀取:

09-04 21:57:07.734: ERROR/AndroidRuntime(387): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dalimited.zs/com.dalimited.zs.Snake}: android.view.InflateException: Binary XML file line #21: Error inflating class com.example.android.snake.SnakeView

請確保你一直滾動。 你會看到它告訴你最后Binary XML file line #21: Error inflating class com.example.android.snake.SnakeView

正如你在我們的問題中所說的那樣,在你重構包名后它不起作用。 如果包名稱未在布局xml文件中重構,則您需要手動更新使用SnakeView布局的布局xml文件中的包名稱。 重構后,您必須清理並重新構建項目。

在將其更改為其他名稱之前,您能告訴您的包裹是什么嗎? 因為我認為這個錯誤是由於這個產生的,所以我認為這是因為你的一個錯誤是找不到類。 您還可以檢查當前包名稱系統(Eclipse)正在為您的應用程序考慮,如下所示:

  1. Content ctx = getApplicationContext();
  2. Application app = ctx.getApplicationInfo();
  3. Log.i("Tag", "Package Name :" + app);

我告訴你這樣做是因為有時我們會更改應用程序的包名稱,但是eclipse仍然只考慮舊的。 我可能錯了,但嘗試這個我認為這可能會起作用。

ClassNotFoundError - 項目類路徑不包含新的包名稱,重構在IDE中無法正常工作。

如果您的蛇源代碼來自Android開發者頁面。 使用新包名更改第21行中的snake_layout.xml文件。 對不起我的英語不好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM