打包后resource.arsc部分Style值为空,使用对应Theme崩溃如何解决?
问题解答
1. 打包后resource.arsc中部分Style值为空是否正常?
这种情况需分场景判断:
- 若为空的是项目未引用的冗余样式,属于正常优化行为——开启资源压缩(
shrinkResources true)或代码混淆时,系统会自动移除未使用的资源,减少包体积。 - 若为空的是项目需要用到的样式,则属于异常情况,可能是依赖库引入不全、资源合并冲突,或混淆规则错误导致必要样式被误删。
2. 使用@style/TextAppearance.AppCompat.Body1导致TextView崩溃的解决方法
崩溃核心原因是属性误用:TextAppearance.AppCompat.Body1是文本外观样式,仅适用于android:textAppearance属性;而android:theme要求传入完整的Theme类型资源,文本外观样式不包含主题所需的全部属性,因此触发属性解析失败异常。
正确用法(设置文本外观)
将android:theme替换为android:textAppearance:
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
若需给TextView单独设置主题
如果要给TextView指定主题,需使用AppCompat的Theme类样式,而非文本外观样式,例如:
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:theme="@style/Theme.AppCompat.Light" />
内容的提问来源于stack exchange,提问作者OvO_sss
相关产品推荐
相关产品推荐

