Android 程序调试生成main.out.xml

本文介绍在Android开发过程中,遇到布局文件layout/main.xml中资源条目main重复定义的错误提示及解决方法。通过调整Eclipse配置避免错误发生。

转:http://www.eoeandroid.com/thread-68083-1-1.html

我们大家在开发android的时候,一定会用到调试,这个是检验你编写的代码是否正确,我们最好要有一个好的android编程习惯,就是说,当你写完一部分代码时,你就要调试一下,这样也对你邮好处的。当我们调试的时候修改了一下布局文件layout/main.xml,然后ctrl + F11运行, 结果碰到下面的错误:这个是什么问题那,下面我们就来解决它。我们来看看android系统是怎么样给我们提示的。

Java代码:

  1. [2010-06-26 16:48:10 - ListViewDemo] Error in an XML file: aborting build.
  2. [2010-06-26 16:48:10 - ListViewDemo] res/layout/main.xml:0: error: Resource entry main is already defined.
  3. [2010-06-26 16:48:10 - ListViewDemo] res/layout/main.out.xml:0: Originally defined here.
复制代码

 


        同时在layout目录下又生成了一个空的main.out.xml文件,觉得很奇怪。


        后来发现是Eclipse的问题,修改完main.xml后,当前激活的Tab页还是main.xml,所以Eclipse默认就会用xslt转换这个xml文件。
        为了解决这个问题,先删除layout目录main.out.xml文件,再选择菜单Project->Clean来Rebuild当前的工程。在Package Exploer选中当前工程右键Run as->Android Application即可运行工程。或者打开任一当前工程的java文件,ctrl+F11就会出现Run as的对话框,同样选择Android Application即可。


       运行过一次工程后,就会在工具栏的Run as下拉框里面出现之次运行过的工程, 点击下拉的菜单一样可以运行工程。这里的之前跑过的工程可以在菜单Run->Run Configurations,对话框如下:






       这里可以看到main.xml也会出现XSL结点下,这时可以删除它们。

       总觉得这样实在太麻烦了,因为布局文件是经常改动的,快捷键会经常使用的。不能每次改完main.xml都要把焦点切换到另一个java文件吧或者去点鼠标。
       后来发现可以在Eclipse里面配置,菜单Windows->Preference,选择结点Run/Debug->Lauching,Lauch Operation选择第一项。

效果图:

 


 


        这样即使当前编辑文件是xml的话,也不会去转换这个xml文件了,而是去运行之前运行过的工程,前提是当前工程运行过一次并且要在之前的Run ConfigurationsXsl结点下的main.xml, main.xml(1)之类的无用的删除了。

上面的问题我们就解决了,是不是有点简单了,其实有的时候问题就是这样简单的,我们在遇到问题的时候,首先不要慌乱,在面写代码时出现错误的时候模拟器上没提示我们,如果没有的话我们就可以找一找你的一些资源文件,要不就是没有导好包,主要的错误就是这些,希望这些对大家有帮助。

E FATAL EXCEPTION: main Process: com.example.juble, PID: 12826 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.LinearLayout.setVisibility(int)' on a null object reference at com.example.juble.LoginActivity$1.lambda$onConnectionStateChange$0$com-example-juble-LoginActivity$1(LoginActivity.java:99) at com.example.juble.LoginActivity$1$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0) at android.os.Handler.handleCallback(Handler.java:958) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:255) at android.os.Looper.loop(Looper.java:364) at android.app.ActivityThread.main(ActivityThread.java:8979) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:572) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1053) 2025-07-24 15:52:41.414 3349-4241 UAH_JNI system_server E uah_event_acquire ! cmdId: 0 ,strPkg: com.example.juble, strIdent: com.android.server.wm, timeout: 720 2025-07-24 15:52:41.425 12826-12826 Process com.example.juble I Sending signal. PID: 12826 SIG: 9 2025-07-24 15:52:41.429 3349-4241 UAH_JNI system_server E uah_rule_ctrl id = 0x1 ,value = pkgName:com.android.launcher,type:1,activityName:com.android.launcher/.Launcher,isFocused:true|pkgName:com.example.juble,type:1,activityName:com.example.juble/.ScanActivity,isFocused:false ---------------------------- PROCESS ENDED (12826) for package com.example.juble ---------------------------- 2025-07-24 15:52:41.494 1692-1692 qspmHal vendor.qti.qspmhal-service E setAppInfoH atPid = 12826, gpuFname:com.example.juble, gpuFver:10解释并解决该错误
07-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值