关于AndroidStudio 引用 appcompat-v7 导致资源文件找不到的问题

当你在创建了一个高版本的项目后,比如 compileSdkVersion 28,AndroidStudio 会自动在 build.gradle 中引用 appcompat-v7 包,此时如果手动 降低 compileSdkVersion 版本,会报错,比如降低到 compileSdkVersion 19 。提示与compile sdk version不一致,然后自己试着修改到一致的版本时,报错会消失,但是会出一行新的提示:Using the appcompat library when minSdkVersion >= 14 and compileSdkVersion < 21 is not necessary, 这个意思是当min target version>=14且compile sdk version<=19时,这个包是不需要的,于是删除appcompat-v7的引用,重新sync,这时会报出一些奇怪的样式引用错误跳转查看详情,发现是一些styles引用了appcompat的内容在manifest文件中有一句引用android:theme="@style/AppTheme"也就是theme

<resources>
<!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
</resources>

这个theme是在values的styles文件中继承父theme,而这个父theme就是引用的appcompat包中的theme,于是我们把这个theme修改成系统自带的theme,例如android:Theme.Light。然后删掉之前生成的customize的内容(要删掉否则报错),最好修改一下style的name属性,与以前不同就可以了

<resources>
<!-- Base application theme. -->
    <style name="BaseTheme" parent="android:Theme.Light">
<!-- Customize your theme here. -->
    </style>
</resources>

然后在manifest文件中修改引用android:theme="@style/BaseTheme"同时要修改activity继承,将默认继承的AppCompatActivity修改为activitypublic class MainActivity extends AppCompatActivity改成public class MainActivity extends Activity,再把自动生成背景图片和后缀的资源文件夹删除(比如 mipmap-anydpi-v26),这样再clean一下,就可以编译通过了。
最后说明一下:可以用较高版本的build tools去适配较低版本的compile sdk的,比如 compileSdkVersion 19
buildToolsVersion “24.0.0”
这都是没有问题的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值