AS3.2和androidx 爬坑

一、背景

前不久的 大会上亮相的 JetPack ,他为android 开发带来了极大地便利,于是开启了尝(爬)鲜(坑)之旅。

自从接手了一个 架构的项目,就喜欢上了这种模式的开发,使用 开发,里面用到了 Databinding,LiveData、Lifecycler 和 viewmodel 等架构组件,代码简洁,流程清晰,整个开发是十分愉快的,慢慢的习惯了用这些东西。

这些组件都是吸引人的,如果还没有了解的可以上手试试。

二、Jetpack 简介

官网介绍:Jetpack 是一套库、工具和架构指南,可以帮助我们快速轻松的构建优秀的Android应用,它提供了公共基础代码,因此我们可以专注于让自己应用独一无二的东西。

主要有三个有点:

加速开发

组件可以单独使用或者组合是使用,同时利用 Kotlin 语言功能,可以使开发效率更高。

消除样板代码

Android Jetpack管理诸如后台任务,导航和生命周期管理等繁琐的活动,因此您可以专注于什么使您的应用更棒

构建搞质量健全的应用

以现代设计实践为基础,Android Jetpack组件可降低崩溃次数并减少内存泄漏,并向后兼容

其中包含组件如下图所示:

以下是官方博客中的图,更加直白:

以上内容来自 Google官方jetpack文档,更多 jetpack 使用及介绍相关内容请参考官方文档。

三、AS 3.2 爬坑

3.1 转换过项目为 androidx

将项目转换成了 的,具体转换步骤如下:

将项目编译的sdk 版本调成

从AS 菜单栏选择 ->

如下为转换前gradle文件:

如下为转换后gradle文件:

官方博客介绍:Hello World, AndroidX

更多转换库依赖可参考 Google maven repo

3.2 databinding + kotlin

习惯使用 kotlin 开发,配合 databinding 进行数据绑定,但是两者生成的 会冲突,解决办法是 使用 依赖 databinding, 如果 项目的是这样的:

那么 model 中的依赖应该是下面的:

注意:两者依赖的版本要一致,否者编译时就会抛出异常

然后我的 金丝雀 中 使用的 是 ,但是 的版本却没有与之对应的,导致无法依赖使用,折腾了很久没有解决就只好将其移除,放弃使用。还天真的以为是 AS 的 bug ,然后傻傻的去 Issue Tracker 给 Google 提了个 bug 。

最近在 看官方文档时,发现了

androidx

,而且在访问 Google maven repo 时 也看到了很多 的身影,如下图:

3.3 navigation 使用

由于上面将项目转换成 ,而使用 时,需要在xml 中使用 标签,但在运行时会抛出找不到 的问题,

所以:玩navigation的不要用androidx,或者等下个版本修复

上述项目地址:https://github.com/imtianx/JetpackLearning

这里简记最近体验AS3.2经历的坑!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181106G02YM800?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券