styles引用了appcompat的内容,导致样式引用错误

用了比较高版本的主题,但是没有本地不存在高版本对应的

compile 'com.android.support:appcompat-v7:25.3.0'

于是删除这个compile,重新sync,这时会报出一些奇怪的样式引用错误。跳转查看详情,发现是一些styles引用了appcompat的内容在manifest文件中有一句引用android:theme=”@style/AppTheme”
也就是theme

<resources>

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

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

<resources>

    <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

这样再clean一下,就可以编译通过了。=============================补充一下==========================可以用较高版本的build tools去适配较低版本的compile sdk的,比如

compileSdkVersion 19
buildToolsVersion "24.0.0"

这都是没有问题的。

参考:
https://www.zhihu.com/question/34094091

你可能感兴趣的:(未整理,android)