Android App由于代码错误而崩溃,不了解logcat消息

时间:2011-09-05 05:41:16

标签: java android eclipse

我正在尝试为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的信息?

6 个答案:

答案 0 :(得分:1)

  

引起:android.view.InflateException:二进制XML文件行#21:错误膨胀类com.example.android.snake.SnakeView

查看您的布局文件。您正在尝试创建CustomView。您的SnakeView类是否扩展了View?

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

在将其更改为其他名称之前,您能告诉您的包裹是什么吗?因为我认为这个错误是由于这个产生的,所以我认为这是因为你的一个错误是找不到类。您还可以检查当前软件包名称系统(Eclipse)正在为您的应用程序考虑,如下所示:

  1. Content ctx = getApplicationContext();
  2. Application app = ctx.getApplicationInfo();
  3. Log.i("Tag", "Package Name :" + app);
  4. 我告诉你这样做是因为有时我们会更改应用程序的包名称,但eclipse仍然只考虑旧的。我可能错了,但尝试这个我认为这可能会起作用。

答案 3 :(得分:0)

ClassNotFoundError - 项目类路径不包含新的包名称,重构在IDE中无法正常工作。

答案 4 :(得分:0)

如果您的蛇源代码来自Android开发者页面。 使用新包名更改第21行中的snake_layout.xml文件。抱歉我的英文。

答案 5 :(得分:0)

正如您在我们的问题中所说,在您重构包名后它不起作用。如果包名称未在布局xml文件中重构,则您需要手动更新使用SnakeView布局的布局xml文件中的包名称。重构后,您必须清理并重新构建项目。