【问题标题】:Wrong styleable resource value resolved for app compiled with Android Studio 3.0为使用 Android Studio 3.0 编译的应用解决了错误的可样式化资源值
【发布时间】:2017-11-02 12:58:22
【问题描述】:

自从我们升级到 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>

另请参阅 MaterialEditText 库的相关issue

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

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

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

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

【问题讨论】:

    标签: android android-studio android-gradle-plugin android-studio-3.0


    【解决方案1】:

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

    strings.xml:

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

    styles.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

    【讨论】:

      猜你喜欢
      • 2023-04-06
      • 1970-01-01
      • 2018-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-03
      • 1970-01-01
      相关资源
      最近更新 更多