gpt4 book ai didi

android - 为使用 Android Studio 3.0 编译的应用程序解决了错误的样式化资源值

转载 作者:太空宇宙 更新时间:2023-11-03 10:59:43 25 4
gpt4 key购买 nike

自从我们升级到 Android Studio 3.0(使用 Android Gradle 插件 3.0.0)后,我们遇到了一个奇怪的问题。

我们的应用程序使用 MaterialEditText图书馆。在 AS 3.0 之前一切正常。现在,在我们将项目迁移到 AS 3.0 并使用此版本的 Android Studio 和相关的 Gradle 插件编译应用程序后,应用程序在使用 MaterialEditText 组件时崩溃:

Caused by: java.lang.RuntimeException: Font asset not found res/drawable-mdpi-v4/ic_clear_search_api_holo_dark.png
at android.graphics.Typeface.createFromAsset(Typeface.java:304)
at com.rengwuxian.materialedittext.MaterialAutoCompleteTextView.getCustomTypeface(MaterialAutoCompleteTextView.java:488)
at com.rengwuxian.materialedittext.MaterialAutoCompleteTextView.init(MaterialAutoCompleteTextView.java:385)
at com.rengwuxian.materialedittext.MaterialAutoCompleteTextView.<init>(MaterialAutoCompleteTextView.java:325)
... 40 more

似乎 typedArray.getString(R.styleable.MaterialEditText_met_accentTypeface) 突然解析为 MaterialAutoCompleteTextView383 中的一些随机可绘制路径.但是,这发生在 Android 低于 8.0 的设备上。在 Android 8.0 上,该应用运行良好。

在升级到 AS 3.0 期间我们的样式没有改变:

<item name="met_typeface">fonts/UnitRoundedOT.otf</item>
<item name="met_accentTypeface">fonts/UnitRoundedOT.otf</item>

另请参阅相关的issue MaterialEditText 库。

将 Android 项目迁移到 AS 3.0 时,似乎只使用新的 Gradle 插件

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

如果不更改 Gradle 文件的其余部分就足以引发此错误。然而,一个完全迁移的项目也有这个问题。

这可能是 Gradle 插件的错误吗?

最佳答案

显然,这个问题的解决方法是将字体文件的路径放在字符串资源中,并从样式属性中引用这些资源

字符串.xml:

<string name="font_unit_rounded">fonts/UnitRoundedOT.otf</string>

样式.xml:

<item name="met_typeface">@string/font_unit_rounded</item>
<item name="met_accentTypeface">@string/font_unit_rounded</item>

有关详细信息,请参阅 issue 346 .目前还不清楚为什么这个问题突然发生在 Android Studio 3.0 上,并且只适用于 Android < 8.0 的设备。鉴于此问题的随机性,我认为这是 Android Gradle 插件的错误。

关于android - 为使用 Android Studio 3.0 编译的应用程序解决了错误的样式化资源值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47075964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com