解决Android API 29 PercentLayout依赖库问题 & 了解AndroidX & 学会查看Android官方文档

一、出发点:

去了解AndroidX的初衷在于,学习Android UI开发部分时,学到百分比布局时准备按照《Android第一行代码 第二版》中教的那样从support库中添加百分比布局库的依赖,但却第一次认真地发现我的代码和书上的代码不一样 ——

我的appcompat库的依赖声明方法都和书上不一样。我的代码(AS自动生成)是implementation(实现),书上是compile(编译);我的代码中的appcompat库也没有版本号(v7)。

   ——我的代码

   ——书上代码

其实这个在我一开始学习Android项目结构时就发现了,但当时没有接触到自己添加依赖库,就没有在意太多了。

果然在我尝试写书上那样的依赖声明时警告了——

它提示我API 28是最后支持遗留support库的版本,建议我把我的依赖库迁移到androidx上。这里“androidx”第一次出现,并且提到了API版本问题关系到了依赖库的声明方式。

既然涉及到版本问题,我首先检查了我的开发环境的版本。经检查,我用的Android Studio版本是3.6.1,API版本是29:

    

这正好符合警告说的,API 29已不再支持support库了(大于28)。

于是我开始疑惑androidx是什么。因为它关系到我声明百分比布局库的依赖。

 

二、了解AndroidX:

我找到了最权威的介绍 —— Android Developers官网上AndroidX的介绍

androidx是Google最新推出的一种软件包结构,和android support library一样是扩展库。在API 28之后的项目中,会将android.support全部替换为androidx,也就是说我们之后开发都会使用或者慢慢地将项目过渡到androidx上来。同时,Google会将一些新的特性加入到androidx命名空间中,但不会为android suapport library添加新特性。

可见相当于Google只是给了我们一些过渡时间,在未来的日子里开发者都会陆续的更新到androidx,那样Google也没有必要对support library进行维护了,这也是前面我的警告上给support library用上了“遗留”一词的原因。

另外,其实AndroidX本质上就是对Android Support Library进行的一次升级,升级主要体现在以下两个方面:

第一,包名:

之前Android Support Library中的API,它们的包名都是在 android.support.* 下面的,而AndroidX库中所有API的包名都变成了在 androidx.* 下面。这是一个很大的变化,意味着以后凡是 android.* 包下面的API都是随着Android操作系统发布的,而 androidx.* 包下面的API都是随着扩展库发布的,这些API基本不会依赖于操作系统的具体版本。

第二,命名规则:

先来看看Andoird Support Library中的命名规则有什么不妥。

在Android Support Library中,例如最常用的support-v4库和appcompat-v7库。support-v4中的4指的是Android API版本号,对应的系统版本是1.6,那么support-v4的意思就是这个库中提供的API会向下兼容到Android1.6系统,对应的包名为 – android.support.v4.app;类似地,appcompat-v7指的是库中提供的API向下兼容至API 7,也就是Android 2.1系统,对应的包名为 – android.support.v7.appcompat。

但是随着时间的推移,1.6、2.1系统早就被淘汰了,现在android官方支持的最低系统版本已经是4.0.1,对应的API版本号是15。support-v4、appcompat-v7库也不再支持那么久远的系统了,但是它们的名字却一直保留了下来,虽然它们现在的实际作用已经对不上当初命名额原因了。

于是,吸取了之前命名规则的弊端,AndroidX内所有库的命名规则里都不会再包含具体操作系统API的版本号了。比如像Android Support Library中的appcompat-v7库,在AndroidX中就变成了appcompat库(就如同我开篇提到的,我AS生成的声明方式没有版本号)。

 

三、PercentLayout 问题解决:

了解了AndroidX是怎么回事后,那么在AndroidX下我怎么声明库依赖和在XML里布局呢?

—— 依赖库声明解决:

我是通过查阅官方文档解决的。因为直接百度我没有找到答案,就算找到了是哪个库,新版本的依赖库的声明又是什么呢?我想,去官方文档上才能找到完美又简洁的解答。但是之前用的文档已经不再适用了,旧文档里只有Android API 的class索引和package索引,而我想查看AndroidX的文档,这样才能找到我需要添加的库及其声明方法。这些旧文档里都没有。

我又去了Android Developers官网,发现就是在刚刚AndroidX介绍的网页,展开“版本说明”,有所有AndroidX内的库(棕色框框出的部分即是部分),

以及它们的声明方法(红色框出的),这正是我想要的声明依赖库的答案!

—— XML 内布局PercentLayout:

声明了依赖库,然后布局文件中androidx下的PercentLayout的标签怎么写呢?上面图片的页面还指路了该库的 API 文档。上图棕色框的链接点过去就是 AndroidX API 文档的 PercentLayout 部分:

 

 

发现其实PercentLayout已经被废弃了。不论是以前的 PercentFrameLayout 还是 PercentRelativeLayout,官方都要求替换为ConstraintLayout 。为了帮助过渡,文档给出了ConstraintLayout的布局模板。

所以不再考虑以前的 PercentFrameLayout 和 PercentRelativeLayout ,取而代之为ConstraintLayout即可。至此问题解决。

 

不过为了能够自主地布局出ConstraintLayout,我们当然需要了解ConstraintLayout 。其实当前页面就是所有 Android 相关 API 的文档的页面,在左侧侧边栏你可以选择需要查看的库。介绍ConstraintLayout的有两个大项:

里面的介绍真的很详尽。从布局讲解到属性介绍,再到class索引,只要你去找。

 

四、学会查看Android官方文档:

其实我一开始学Android的时候就想找到方便实用又详尽的官方文档,因为查看官方文档不仅仅是一种很好的编程习惯,更是帮助我解决编程时问题最好/最有效的工具。之前参考前辈们的博客,通过AS下载了Android API文档,很占内存;而且确实不好用,只有Android API 索引,我想通过它学习某种布局的属性时很难做到,还有依赖库声明写法也找不到;它的内容也放得很散,我无法从编程需求出发去找到我想学习的内容。很局限。

但这次以解决百分比布局的相关问题为契机,我找到了满足我的需求的所有“官方文档们”。它们都来自同一个地方 —— Android Developers官网 。简直有些相见恨晚的感觉。

其实上面的trouble shooting就已经用到了我满意的两个子网址。但完整起见,我把我收藏的子网址推荐如下:

1、AndroidX库说明:

随时查阅AndroidX内的库的声明方式,解决从Android Support Library过渡到AndroidX的依赖库问题:

指路:https://developer.android.google.cn/jetpack/androidx

2、API 开发文档:

Android相关 API 的class / package index 。随时了解你所需要用的组件 / 方法:

指路:https://developer.android.google.cn/reference

 

3、开发者指南:

进行需求导向 / 目的导向的学习,快速get需要的技术:

指路:https://developer.android.google.cn/guide

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值