ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

使用Android Studio 3.0编译的应用程序解析了错误的可设置资源值

2019-07-10 18:25:22  阅读:270  来源: 互联网

标签:android android-studio android-gradle android-studio-3-0


我们遇到了一个奇怪的问题,因为我们已升级到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)突然解析为MaterialAutoCompleteTextView第383行中的一些随机可绘制路径.但这仅发生在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插件的错误吗?

解决方法:

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

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< 8.0.鉴于此问题的随机性,我认为这是Android Gradle插件的错误.

标签:android,android-studio,android-gradle,android-studio-3-0
来源: https://codeday.me/bug/20190710/1426682.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有