Android升级支持库版本遇到的两个问题详解
作者:山水相逢z 发布时间:2023-12-02 11:24:38
前言
早在2011年它作为安卓兼容库发布,在75%的应用中使用过,是最广泛使用的安卓库。它事实上不是一个单一的文件,而是一个集合,其中可以大致可以分为两组:兼容库和组件库。
每一个库都指明了所支持的最小sdk版本。有一点容易弄错,就是高版本的支持库很容易被理解为涵盖了低版本支持库的所有内容。实际上,并非如此。(可能你认为v7-appcompat包含了v4,但是不是这样的)。
公司项目之前support Library 版本比较混乱,各moudle有好几个版本的v7包和v4包,而且版本还比较低,今天抽时间统一了下支持库以及buildToolsVersion等的版本,但是遇到了两个问题,记录一下。
1. 升级buildToolsVersion至26
最新的buildToolsVersion已经到26了,照之前方式,直接在build文件中将buildToolsVersion后的引用版本改为26.0.2,然后同步,发现编不过去,提示:
[failed to find build tools revision 26.0.2]
查了一下,从sdk 26开始,需要在根目录build文件的repositories加上以下内容:
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
再次编译,成功。
2. 在主题设置隐藏ActionBar无效
最初我的appcompat-v7版本是20,所以activity继承的是ActionBarActivity,所以在style文件里是这样设置是有用的的:
<item name="android:windowActionBar" tools:targetApi="honeycomb">false</item>
<item name="android:windowNoTitle">true</item>
升级到26.1.0后,ActionBarActivity被AppCompatActivity替代,这时候用android:windowActionBar这种方式设置就不行了,改为以下方式
<item name="windowActionBar" tools:targetApi="honeycomb">false</item>
<item name="windowNoTitle">true</item>
即去掉“android:”,至于这两种写法的区别:
若添加在属性名称前添加 andoird: 时即指定属性为 android 包下。
而项目的 Base Style AppTheme 继承自 Theme.AppCompat,位于 appcompat-v7 library, 而不是 android 包下。所以错
误地使用 android:windowActionBar 和 android:windowNoTitle,应该使用 windowActionBar 和 windowNoTitle
来源:http://www.jianshu.com/p/9e0c019b04e8
猜你喜欢
- 前言在java里,当我们需要拷贝一个对象时,有两种类型的拷贝:浅拷贝与深拷贝。浅拷贝只是拷贝了源对象的地址,所以源对象的值发生变化时,拷贝对
- 新手当在一个类文件中进行了一些操作之后,会造成sout快捷命令无法自动生成。比如操作了import引入其它包之后。主要是对IDEA操作的不熟
- 项目地址:https://github.com/JeasonWong/SlackLoadingView老规矩,先上效果。图好大。。说下第一眼
- 日志过滤对于一个网站日志,首先要对它进行过滤,删除一些不必要的信息,我们通过scala语言来实现,清洗代码如下,代码要通过别的软件打包为ja
- LeetCode -- Path Sum III分析及实现方法题目描述:You are given a binary tree in whi
- 我相信现在绝大部分App几乎避免不了消息推送,其实原理还是使用了长连接,通过服务端将消息推给客户端。市面上也有不少三方库,例如极光、友盟、个
- List<T>.sort()可以实现对T的排序,比如List<int>.sort()执行后集合会按照in
- 题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。经典题,不多说,直接上代码import java.
- 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输
- 配置绑定所谓配置绑定”就是把配置文件中的值与 JavaBean 中对应的属性进行绑定。通常,我们会把一些配置信息(例如,
- Java 获取文件大小今天写代码时需要实现获取文件大小的功能,目前有两种实现方法,一种是使用File的length()方法;另外
- 在hibernate5中,有了一些新的变动: 新引导 APISpatial/GIS 支持Java 8 支持扩展 AUTO
- 什么是代理模式代理模式是开发中常见的一种设计模式,使用代理模式可以很好的对程序进行横向扩展。代理,顾名思义就是一个真实对象会存在一个代理对象
- 效果展示人脸支付效果视频密码框输入支付效果视频因为密码支付时会调起系统安全键盘,开启自动保护功能,防止泄露,会导致输入密码时录屏黑屏,故使用
- 一:需求详情:OpenOffice.org 是一套跨平台的办公室软件套件,能在 Windows、Linux、MacOS X (X11)、和
- Spring是什么?Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其
- 简介Android给我们提供了一种轻量级的异步任务类AsyncTask。该类中实现异步操作,并提供接口反馈当前异步执行结果及进度,这些接口中
- 第1部分 ArrayList介绍ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。它继承于A
- 一、前言随着互联网项目前后端分离方式的流行,前端与后端交给不同的人员开发,项目沟通成本也随之提高。主要表现在WebAPI接口的沟通,Swag
- 记得在 MS Build 2020 大会上,C# 语言开发项目经理 Mads Torgersen 宣称 C# 9.0 将会随着 .NET 5