多渠道打包gradle插件(GitHub),支持打包apk和aar,主要功能包括
- 读取渠道配置文件,动态生成
ProductFlavor
- 重命名apk和aar文件名字,根据需要指定输出目录
- 运行多渠道打包任务(
multiChannel
)时,可以选择禁用不必要的任务(lint
,debug
和test
),提升打包速度
添加插件
1 | classpath 'io.github.tubb:multichannel:1.0.1' |
多渠道打包gradle插件(GitHub),支持打包apk和aar,主要功能包括
ProductFlavor
multiChannel
)时,可以选择禁用不必要的任务(lint
, debug
和test
),提升打包速度1 | classpath 'io.github.tubb:multichannel:1.0.1' |
由于工作和个人原因要经常使用GitHub和GitLab代码托管平台,GitHub下还有多个账号,然后就经常需要在多平台多账号之间来回切换,很麻烦。平常使用SSH协议来访问代码仓库比较多一些,那有没有什么好办法来解决账号来回切换繁琐问题呢?下面来具体分析各种使用场景,找到解决问题的办法
在Android开发中,预取数据可以说是一个比较通用的功能,通过预取数据可以有效的减少用户等待的时间,提升用户体验,是一种常见的以空间换取时间的策略。虽然说预取数据这个功能比较好实现,但一直没有发现一个好用的开源库实现,于是自己花了点时间写了一个,尽量做到简单优雅、轻量和侵入性低
Android端实现TCP长连接场景其实不多,我们最熟悉的不过推送和HTTP协议的实现(OkHttp),本文讨论的是在实现推送
长连接的情况下怎么来做性能优化,下文只是我的一点拙见,有不妥之处还望指出
可以说大部分APP是离不开推送(push)这个功能的,不过平常我们都是接入第三方SDK(极光、个推等)居多,因为要做一个推送服务,不光客户端要编写相应的Socket通信代码,服务器端更是麻烦,要处理大规模的长连接服务,消息还得及时送达,一两台服务器可是吃不消。相对来说客户端编写Socket通信的代码会简单一些,但是也是要处理一些平台相关的问题,比如推送服务进程如何保活,APP进程如何跟推送服务进程通信,如何节省手机电量和手机弱网情况下如何提升通信质量等一系列的问题。这些问题以后有时间分析,下面来看看TCP长连接性能如何来优化
执行某个操作时需要满足一些前提条件,而这些前提条件需要用户参与
才能满足。
比如进入个人资料界面
的前提是要先登录
,而登录这个操作需要用户的参与才能完成。
平常的做法可能是利用事件通知机制(EventBus)、BroadcastReceiver和startActivityForResult(),把登录成功
这个事件告知前面的代码可以跳到个人资料界面
了。
但如果前提条件有多个呢,是不是得发送多个事件呀,是不是得监听多个事件呀,是不是很麻烦呀(有没有被恶心过😆
)。
那有没有比较优雅的方式来完成呢,嗯嗯,编写这个小框架的目的就在此~
组件和模块间Activity路由框架,通过动态代理技术实现,轻量、灵活
APP比较简单或者APP数据库操作比较少, 简单的几张表, 少量的数据存储。 这个时候其实没有必要去使用第三方的ORM库
SqlGenerator
致力于在不使用ORM库的情况下, 通过生成一些boilerplate code
方式简化数据库操作, 从而减轻工作量
应用事件中心,事件的生产端和处理端分离,事件处理结果广播通知,事件状态(初始化、处理中和处理完成)管理,事件类型区分(普通事件、DB事件和网络事件)和管理
最近在编写一个小工具库,主要为了简化使用SQLite,避免一些重复性代码的编写。在这个过程中比较详细的了解了SQLite中的一些技术点,比如索引,对自己之前的认知也有蛮大提升,所以记录如下~
之前自己对索引的认知只停留在可以提高查询速度
上,也没有完整的去了解索引的技术点,导致错误的使用索引。记得有一次,想为开发的APP进行调优,在数据库这块想提升下查询速度,为所有的主键都加上索引:)(SQLite数据库会为主键自动加上索引,不需要自己手动去加)。
fragmentargs可以用来处理Fragment属性的保存(Fragment.setArguments(Bundle bundle)
)和自动赋值(Fragment.getArguments()
)逻辑,以在编译时自动生成源代码的方式来减少一些重复代码的编写,可以查看这篇博文了解一下