5.0时代(android L)已经是两年前的事了 6.0的SDK现在都可以用了
那么对于向下兼容的问题越来越重要 所以不得不用v7这个包
eclipse不同于 Android Studio可以gradle中一句compile直接引用v7
需要手动从SDK目录的 \extras\android\support\v7\appcompat 导入这个v7项目
**需要注意的是 ,Import 这个项目的时候 必须勾选这个选项
项目和其依赖工程必须在同一个工作空间下 。
而且项目中只能有一个v7包 不能出现libs下导入了 v7 的jar包 又依赖了v7 的项目
否则当使用Theme.Appcompat.Light.NoActionBar 这个主题时 出现异常
那么为什么就得导入项目 而不是用v7的jar包呢
看一下v7工程里的res文件夹:
好吧 这么多是干嘛的 。
比如使用v7包提供的Appcompat主题啊 就需要这里面的资源
一种常见错误表现是 引入了这个项目之后直接出现编译不通过 clean也不行 经常提示values-21 values-23 里面的东西找不到
values-21 里面是Android 5.0 系统加载的资源目录 (values 后面的后缀是为了区分不同版本 ,分辨率,不同语言)
values-23就是android 6.0 的资源目录了 。
删除这些文件夹 不报错了 然并卵 运行依旧出错
检查v7这个项目的编译版本 和 自己当前项目的编译版本 即project.properties 文件 的 target 属性
调整成 23 然后clean项目
为什么呢 因为编译版本小于6.0 应用编译打包时 不认为这个app 会安装在6.0上 所以就不会把values-23的内容打包进去 。小于5.0同理