将API 23降级至API 19时遇android:style/TextAppearance.Material未找到错误
解决API19降级时
TextAppearance.Material资源找不到的问题 嘿,这个问题我之前帮朋友排查过,核心原因很明确:你碰到的TextAppearance.Material找不到的错误,是因为这个系统样式是Android API 21(也就是Lollipop)才新增的,而你把compileSdkVersion降到了19,编译时自然找不到高版本才有的资源。再加上你用的AppCompat库版本可能和API19不匹配,就触发了这个报错。
给你两个解决方案,优先推荐第二个,省得后续麻烦:
方案一:适配compileSdkVersion 19的AppCompat版本
- 打开Module级别的
build.gradle,把AppCompat依赖改成和API19对应的版本,比如v19.1.0:dependencies { implementation 'com.android.support:appcompat-v7:19.1.0' } - 同时检查Manifest里的主题,用AppCompat v19支持的基础主题,比如
@style/Theme.AppCompat.Light,别用那些带Material后缀的高版本变体。
方案二:保留高版本compileSdk,只降级兼容版本(强烈推荐)
其实没必要把compileSdkVersion也降到19,你只需要把minSdkVersion和targetSdkVersion设为19,compileSdkVersion继续用原来的23(甚至更高,比如28,这是Android Support Library的最后一个稳定版本)就行:
android { compileSdkVersion 23 defaultConfig { minSdkVersion 19 targetSdkVersion 19 // 其他配置比如applicationId、versionCode之类的不动 } // 你之前加的resolutionStrategy如果是为了强制依赖版本,也可以保留,但要确保和compileSdk匹配 }
这么做的好处是:编译时能访问高版本的系统资源,AppCompat库能正常发挥向下兼容的作用,同时你的APP依然能在API19的设备上运行。而且还能避免后续碰到其他高版本资源找不到的问题。
额外注意事项
你Manifest里的android:roundIcon属性是API25才有的,API19不支持,必须删掉,不然也会报资源错误。修改后的Manifest示例:
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/Theme.AppCompat"> <activity android:name=".MainActivity" android:noHistory="true"> <!-- 记得加上启动页的intent-filter,不然APP可能无法正常打开 --> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application>
内容的提问来源于stack exchange,提问作者sonic18
相关产品推荐
相关产品推荐

