前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AndroidX

AndroidX

作者头像
大公爵
发布2019-08-12 16:43:33
2.8K0
发布2019-08-12 16:43:33
举报
文章被收录于专栏:葬爱家族葬爱家族

一、简介

Google 2018 IO 大会推出了 Android新的扩展库 AndroidX,用于替换原来的 Android扩展库,按照官方文档说明 AndroidX 是对 android.support.xxx 包的整理后产物,因为之前的 support 包过于混乱,比如之前我们如果使用support为27.1.1的相关依赖库时。可能需要所有相关的support 库都为27.1.1。如果其中有bug的话,可能需要所有的都去升级,存在一个绑定关系,而且正式版的发布周期也很长。

通过AndroidX,我们可以看到实时实现的特性和bug修复。升级个别依赖,不需要对使用的所有其他库进行更新。这就和我们使用Github上的开源库一样的,出了问题,我们可以提出bug和意见。作者修复后,发布新版本,我们就可以直接替换使用了。更加的透明便捷。

二、配置

  • 将AS更新至 AS 3.2及以上;
  • Gradle 插件版本改为 4.6及以上; 项目下 gradle/wrapper/gradle-wrapper.propertie 文件中的distributionUrl改为:
  • compileSdkVersion 版本升级到 28及以上;
  • buildToolsVersion 版本改为 28.0.2及以上。
  • 在项目的gradle.properties文件里添加如下配置:
代码语言:javascript
复制
android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
  • 替换依赖库
代码语言:javascript
复制
implementation 'com.android.support:appcompat-v7:28.0.2' 
修改为 implementation 'androidx.appcompat:appcompat:1.0.0'

implementation 'com.android.support:design:28.0.2'
修改为 implementation 'com.google.android.material:material:1.0.0'
  • 修改导包
代码语言:javascript
复制
import android.support.v7.app.AppCompatActivity;
修改为 import androidx.appcompat.app.AppCompatActivity;

三、mapping.csv

  • 如果你不知道切换到AndroidX后依赖库怎么导入,google为我们提供了一个mapping文件在线下载链接

PS:因为太多了,截图只列出部分

  • 如果你不知道切换到AndroidX后类路径是什么,google也为我们提供了一个mapping文件在线下载链接

PS:因为太多了,截图只列出部分

四、AndroidStudio自动转换

AS 3.2 及以上版本提供了更加方便快捷的方法一键迁移到 AndroidX。选择菜单上的ReFactor —— Migrate to AndroidX... 即可。(如果迁移失败,就需要重复上面1,2,3,4步手动去修改迁移)

注意:如果你的项目compileSdkVersion 低于28,点击Refactor to AndroidX 会提示升级sdk版本:

代码语言:javascript
复制
You need to have at least have compileSdk 28 set in your module build.gradle to refactor to androidx

五、AndroidStudio新建工程

如果你是从头开发的新工程,AndroidStudio可以在新建工程时就配置好AndroidX。

六、需要注意的问题

  • 通过字符串引用的对象 有时候我们会通过字符串引用一些对象,而这些对象在切换到AndroidX后,路径变了,用原来的字符串引用不到了,所以我们要格外地注意一下。

典型例子:behavior

代码语言:javascript
复制
// support包
android.support.design.widget.AppBarLayout$ScrollingViewBehavior

// AndroidX
com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior
  • 编译注解框架 我们在写编译注解框架时都会生成java文件,其中import包如果是手写拼接字符串的方式写的,也会出现找不到类的错误。
  • 属性变更 AndroidX对某些组件的属性做了调整,比如FloatingActionButton,切换到AndroidX后,可能会出现解析失败,需要删除一些属性或者调整一些属性。
  • 网络安全规则 Android P 中新引入了网络安全规则,以上内容会对使用 http 的 URL 出现,默认会禁止访问 http 类型的地址。

当然,通常我们发布的时候会使用 Https 类型的网络协议,而当开发和调试的时候可能就没有那么严格了。所以,为了解决这个问题, Android 新引入了下面的解决方案:

首先,创建配置文件 res/xml/network_security_config.xml,内容如下:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">localhost</domain>
    </domain-config>
</network-security-config>

这里的 localhost是 host 的地址,比如我上面的出错的地址应该是makeunion.com。 然后,我们将其配置到 manifest.xml 中:

代码语言:javascript
复制
<application
    android:networkSecurityConfig="@xml/network_security_config"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
    <activity android:name=" (...)
</application>

如果项目中使用了多个不同的地址,并且都是 http 的,所以就需要在该地址下面配置多个域名。

PS:更多信息请参考AndroidX官方文档

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.08.09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、简介
  • 二、配置
  • 三、mapping.csv
  • 四、AndroidStudio自动转换
  • 五、AndroidStudio新建工程
  • 六、需要注意的问题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档