如何判断哪个二进制XML文件在Android中导致错误?

如何判断哪个二进制XML文件在Android中导致错误?,android,xml,android-layout,Android,Xml,Android Layout,我为一个输入法反编译了一个.apk,我正试图改变它的屏幕布局。我期望的更改在Nexus10上成功,但我的Nexus4在logcat中由于以下错误而崩溃。如何判断是哪个.xml文件导致了错误?实际上有数百个.xml文件,它们都是相互引用的意大利面条 E/AndroidRuntime( 5344): FATAL EXCEPTION: main E/AndroidRuntime( 5344): java.lang.RuntimeException: Binary XML file line #5: Y

我为一个输入法反编译了一个.apk,我正试图改变它的屏幕布局。我期望的更改在Nexus10上成功,但我的Nexus4在logcat中由于以下错误而崩溃。如何判断是哪个.xml文件导致了错误?实际上有数百个.xml文件,它们都是相互引用的意大利面条

E/AndroidRuntime( 5344): FATAL EXCEPTION: main
E/AndroidRuntime( 5344): java.lang.RuntimeException: Binary XML file line #5: You must     supply a layout_width attribute.
E/AndroidRuntime( 5344):    at android.content.res.TypedArray.getLayoutDimension(TypedArray.java:491)
E/AndroidRuntime( 5344):    at android.view.ViewGroup$LayoutParams.setBaseAttributes(ViewGroup.java:5819)
E/AndroidRuntime( 5344):    at android.view.ViewGroup$MarginLayoutParams.<init>(ViewGroup.java:5988)
E/AndroidRuntime( 5344):    at android.widget.LinearLayout$LayoutParams.<init>(LinearLayout.java:1831)
E/AndroidRuntime( 5344):    at android.widget.LinearLayout.generateLayoutParams(LinearLayout.java:1743)
E/AndroidRuntime( 5344):    at android.widget.LinearLayout.generateLayoutParams(LinearLayout.java:58)
E/AndroidRuntime( 5344):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:757)
E/AndroidRuntime( 5344):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
E/AndroidRuntime( 5344):    at android.view.LayoutInflater.parseInclude(LayoutInflater.java:839)
E/AndroidRuntime( 5344):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:745)
E/AndroidRuntime( 5344):    at android.view.LayoutInflater.parseInclude(LayoutInflater.java:839)
E/AndroidRuntime( 5344):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:745)
E/AndroidRuntime( 5344):    at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
E/AndroidRuntime( 5344):    at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
E/AndroidRuntime( 5344):    at gp.a(SourceFile:82)
E/AndroidRuntime( 5344):    at com.google.android.apps.inputmethod.libs.framework.keyboard.KeyboardViewHelper.a(SourceFile:144)
E/AndroidRuntime( 5344):    at com.google.android.apps.inputmethod.libs.framework.keyboard.Keyboard.getBodyView(SourceFile:154)
E/AndroidRuntime( 5344):    at com.google.android.apps.inputmethod.libs.framework.keyboard.KeyboardSnapshotTaker.a(SourceFile:173)
E/AndroidRuntime( 5344):    at com.google.android.apps.inputmethod.libs.framework.keyboard.Dashboard.onKeyboardReady(SourceFile:160)
E/AndroidRuntime( 5344):    at com.google.android.apps.inputmethod.libs.framework.core.InputBundle.a(SourceFile:33)
E/AndroidRuntime( 5344):    at dO.onKeyboardDefReady(SourceFile:224)
E/AndroidRuntime( 5344):    at ed.a(SourceFile:84)
E/AndroidRuntime( 5344):    at ed.onPostExecute(SourceFile:65)
E/AndroidRuntime( 5344):    at android.os.AsyncTask.finish(AsyncTask.java:631)
E/AndroidRuntime( 5344):    at android.os.AsyncTask.access$600(AsyncTask.java:177)
E/AndroidRuntime( 5344):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
E/AndroidRuntime( 5344):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 5344):    at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 5344):    at android.app.ActivityThread.main(ActivityThread.java:5103)
E/AndroidRuntime( 5344):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 5344):    at java.lang.reflect.Method.invoke(Method.java:525)
E/AndroidRuntime( 5344):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
E/AndroidRuntime( 5344):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime( 5344):    at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(5344):致命异常:main
E/AndroidRuntime(5344):java.lang.RuntimeException:二进制XML文件行#5:必须提供布局宽度属性。
E/AndroidRuntime(5344):位于android.content.res.TypedArray.getLayoutDimension(TypedArray.java:491)
E/AndroidRuntime(5344):位于android.view.ViewGroup$LayoutParams.setBaseAttributes(ViewGroup.java:5819)
E/AndroidRuntime(5344):位于android.view.ViewGroup$MarginLayoutParams(ViewGroup.java:5988)
E/AndroidRuntime(5344):位于android.widget.LinearLayout$LayoutParams(LinearLayout.java:1831)
E/AndroidRuntime(5344):位于android.widget.LinearLayout.generateLayoutParams(LinearLayout.java:1743)
E/AndroidRuntime(5344):位于android.widget.LinearLayout.generateLayoutParams(LinearLayout.java:58)
E/AndroidRuntime(5344):位于android.view.LayoutInflater.rInflate(LayoutInflater.java:757)
E/AndroidRuntime(5344):位于android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
E/AndroidRuntime(5344):位于android.view.LayoutInflater.parseInclude(LayoutInflater.java:839)
E/AndroidRuntime(5344):位于android.view.LayoutInflater.rInflate(LayoutInflater.java:745)
E/AndroidRuntime(5344):位于android.view.LayoutInflater.parseInclude(LayoutInflater.java:839)
E/AndroidRuntime(5344):位于android.view.LayoutInflater.rInflate(LayoutInflater.java:745)
E/AndroidRuntime(5344):在android.view.LayoutInflater.inflate(LayoutInflater.java:492)
E/AndroidRuntime(5344):在android.view.LayoutInflater.inflate(LayoutInflater.java:397)
E/AndroidRuntime(5344):位于gp.a(源文件:82)
E/AndroidRuntime(5344):位于com.google.android.apps.inputmethod.libs.framework.keyboard.KeyboardViewHelper.a(源文件:144)
E/AndroidRuntime(5344):位于com.google.android.apps.inputmethod.libs.framework.keyboard.keyboard.getBodyView(源文件:154)
E/AndroidRuntime(5344):位于com.google.android.apps.inputmethod.libs.framework.keyboard.KeyboardSnapshotTaker.a(源文件:173)
E/AndroidRuntime(5344):位于com.google.android.apps.inputmethod.libs.framework.keyboard.Dashboard.onKeyboardReady(源文件:160)
E/AndroidRuntime(5344):位于com.google.android.apps.inputmethod.libs.framework.core.InputBundle.a(源文件:33)
E/AndroidRuntime(5344):at dO.onkeyboardefready(源文件:224)
E/AndroidRuntime(5344):位于ed.a(源文件:84)
E/AndroidRuntime(5344):在ed.onPostExecute(源文件:65)
E/AndroidRuntime(5344):位于android.os.AsyncTask.finish(AsyncTask.java:631)
E/AndroidRuntime(5344):位于android.os.AsyncTask.access$600(AsyncTask.java:177)
E/AndroidRuntime(5344):位于android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
E/AndroidRuntime(5344):位于android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(5344):位于android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(5344):位于android.app.ActivityThread.main(ActivityThread.java:5103)
E/AndroidRuntime(5344):位于java.lang.reflect.Method.Invokenactive(本机方法)
E/AndroidRuntime(5344):位于java.lang.reflect.Method.invoke(Method.java:525)
E/AndroidRuntime(5344):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
E/AndroidRuntime(5344):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime(5344):位于dalvik.system.NativeStart.main(本机方法)

非常确定lint应该捕捉到这样的错误。您可以将其用作命令行工具,也可以从Eclipse使用。

您有那么多xml文件,以至于无法查看第5行最近打开的xml?(只是一个问题)如日志
第5行所示:必须提供布局宽度属性。
意味着您忘记在xml中为任何视图添加布局宽度属性是的,有数百个.xml文件。这是谷歌的中文拼音输入法,有各种各样的铃声和口哨。(我尝试的改变很小——我只是想把内置的QWERTY布局改为Dvorak。我必须编辑几个文件才能让它工作,因为它有单独的横向/纵向布局、单独的英文/中文布局等。在我做了所有更改之后,它在我的Nexus 10上运行得非常好,但我的Nexus 4崩溃了。)真的没有办法告诉我哪个文件是错误的来源吗?谢谢!它似乎没有抓住它。谷歌代码中有383个错误和2202个警告,我甚至没有修改,但与缺少布局宽度无关…谢谢!它似乎没有抓住它。我甚至没有修改谷歌代码中的383个错误和2202个警告,但与缺少版面宽度无关。。。