一、背景
前不久的 大会上亮相的 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经历的坑!
领取专属 10元无门槛券
私享最新 技术干货