Android API 21的9patch错误?

4

在我的当前开发过程中,我遇到了一个非常奇怪的错误......在所有测试的API版本上,应用程序运行得很完美,流畅且没有错误,但仅在API 21上,我遇到了以下错误,并且我不知道如何修复它。

06-08 12:59:49.703 2865-2865/de.eplus.b2p.alditalk.mock_local E/AndroidRuntime: FATAL EXCEPTION: main
                                                                            Process: mypackage, PID: 2865
                                                                            java.lang.RuntimeException: Unable to start activity ComponentInfo{de.eplus.b2p.alditalk.mock_local/mypackage.LoginActivity}: android.view.InflateException: Binary XML file line #72: Error inflating class EditText
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2739)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2804)
                                                                                at android.app.ActivityThread.access$900(ActivityThread.java:181)
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                at android.os.Looper.loop(Looper.java:145)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:6066)
                                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                                at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
                                                                             Caused by: android.view.InflateException: Binary XML file line #72: Error inflating class EditText
                                                                                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:770)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:821)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:821)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:821)
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:366)
                                                                                at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)
                                                                                at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                                                                                at de.eplus.b2p.whitelabel.common.login.LoginActivity.onCreate(LoginActivity.java:290)
                                                                                at android.app.Activity.performCreate(Activity.java:6368)
                                                                                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2692)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2804) 
                                                                                at android.app.ActivityThread.access$900(ActivityThread.java:181) 
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473) 
                                                                                at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                at android.os.Looper.loop(Looper.java:145) 
                                                                                at android.app.ActivityThread.main(ActivityThread.java:6066) 
                                                                                at java.lang.reflect.Method.invoke(Native Method) 
                                                                                at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 
                                                                             Caused by: android.content.res.Resources$NotFoundException: File res/drawable-v21/abc_edit_text_material.xml from drawable resource ID #0x7f020015
                                                                                at android.content.res.Resources.loadDrawableForCookie(Resources.java:3761)
                                                                                at android.content.res.Resources.loadDrawable(Resources.java:3629)
                                                                                at android.content.res.TypedArray.getDrawable(TypedArray.java:762)
                                                                                at android.view.View.<init>(View.java:3991)
                                                                                at android.widget.TextView.<init>(TextView.java:1012)
                                                                                at android.widget.EditText.<init>(EditText.java:80)
                                                                                at android.widget.EditText.<init>(EditText.java:76)
                                                                                at android.support.v7.widget.AppCompatEditText.<init>(AppCompatEditText.java:60)
                                                                                at android.support.v7.widget.AppCompatEditText.<init>(AppCompatEditText.java:56)
                                                                                at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:112)
                                                                                at android.support.v7.app.AppCompatDelegateImplV7.createView(AppCompatDelegateImplV7.java:980)
                                                                                at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:1039)
                                                                                at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
                                                                                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:732)
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:813) 
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:821) 
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:821) 
                                                                                at android.view.LayoutInflater.rInflate(LayoutInflater.java:821) 
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:511) 
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:415) 
                                                                                at android.view.LayoutInflater.inflate(LayoutInflater.java:366) 
                                                                                at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                                                                                at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                                                                at de.eplus.b2p.whitelabel.common.login.LoginActivity.onCreate(LoginActivity.java:290) 
                                                                                at android.app.Activity.performCreate(Activity.java:6368) 
                                                                                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) 
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2692) 
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2804) 
                                                                                at android.app.ActivityThread.access$900(ActivityThread.java:181) 
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473) 
                                                                                at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                at android.os.Looper.loop(Looper.java:145) 
                                                                                at android.app.ActivityThread.main(ActivityThread.java:6066) 
                                                                                at java.lang.reflect.Method.invoke(Native Method) 
                                                                                at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 
                                                                             Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #24: <nine-patch> requires a valid 9-patch source image
                                                                                at android.graphics.drawable.NinePatchDrawable.updateStateFromTypedArray(NinePatchDrawable.java:445)
                                                                                at android.graphics.drawable.NinePatchDrawable.inflate(NinePatchDrawable.java:401)
                                                                                at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1170)
                                                                                at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:185)
                                                                                at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1170)
                                                                                at android.graphics.drawable.InsetDrawable.inflate(InsetDrawable.java:105)
                                                                                at android.graphics.drawable.Drawable.cr

有人能帮我解决这个问题吗?文件

res/drawable-v21/abc_edit_text_material.xml

我猜想它是包含在 appcompat 库中的... 我已经更新了构建工具,多次清理了所有内容,重新安装了所有东西,甚至还硬重置了设备,但什么也没改变。之前几周都可以工作... 突然间就出这个问题了,而我并不知道改变了什么...(并未触碰项目)


1
Android API 21 的 9patch 错误?res/drawable-v21/abc_edit_text_material.xml不匹配。一个 XML 怎么能与一个 9 patch 进行比较呢?这甚至告诉你更多信息:Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #24: <nine-patch> requires a valid 9-patch source image`。 - Phantômaxx
2
由于:org.xmlpull.v1.XmlPullParserException: 二进制 XML 文件行#24:<nine-patch> 需要有效的 9-patch 源图像。堆栈跟踪中的最后一个原因。 - glethien
1
是的,就是我在之前评论中添加的内容。它告诉你没有使用9 patch图像。请注意,图像与xml文件是不同的东西。我猜你对9 patch有点困惑。 - Phantômaxx
@Rotwang,你的观点是错误的。XML文件可以包含一个<nine-patch>元素,该元素指向源路径中的有效9-patch图像,但在尝试填充该可绘制对象时仍可能出现错误。 - Richard Le Mesurier
@RichardLeMesurier 当然。但是“9 patch错误”意味着9 patch图像结构存在错误(即:边框畸形)。 - Phantômaxx
显示剩余2条评论
1个回答

6

我相信这是最新的gradle插件版本出现的问题。

我正在使用:

classpath 'com.android.tools.build:gradle:2.2.0-alpha3'

我和你一样也遇到了相同的错误。

你可以回滚插件到这个版本来解决问题:

classpath 'com.android.tools.build:gradle:2.1.0'

然而,这意味着如果您正在使用预览版Android Studio,则无法使用即时运行。

参考我的Android Studio版本:

Android Studio 2.2 Preview 3
Build #AI-145.2949926, built on June 7, 2016
JRE: 1.8.0_76-release-b01 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o

我在一个v21设备上尝试,结果遇到了错误。 在运行<21或>21的设备上没有遇到该错误。


1
谷歌似乎已经意识到了这个问题。希望它能很快得到解决!https://code.google.com/p/android/issues/detail?id=210467 - Jarrod Robins
在华为设备上,使用稳定版本v2.2.1的gradle构建仍然存在错误。希望v2.2.2可以解决这个问题。否则可能存在一个相关的错误,具有相同的堆栈跟踪,但与华为有关。 - Richard Le Mesurier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接