美文网首页如何做一个崩溃率少于千分之三噶应用app2aecebf915e9Android开发经验谈
[Android]如何做一个崩溃率少于千分之三噶应用app(1)

[Android]如何做一个崩溃率少于千分之三噶应用app(1)

作者: CangWang | 来源:发表于2016-08-01 11:31 被阅读7748次

以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章。

[Android]如何做一个崩溃率少于千分之三噶应用app--章节列表

看到这个标题,可能有人会耻笑,认为这应该很简单吧。

但是请认真思考一下啦,

你设计的app是否有经过万级的日活,十万级的日活,千万级的日活?

你设计的app是代码量是多少?你能保证你代码不停迭代,依然保持低崩溃?

你设计的app的有没有通过云测?

你设计的app的适配性和优化性是否已经达到业内领先?

产品的设计和运营是否已经达到瓶颈?

如何算崩溃呢?这里崩溃是指app被强制关闭或者app捕获异常重启。

就以现在的手机YY为例吧,他们的日活超过百万,他们的崩溃率是千分之七。

我们现在研发的app经过六个月的迭代,崩溃率却依然低于千分之三。

如何统计崩溃?一般成熟的app都会有抓log后台上传机制,这里就不过多的介绍啦。

下面属于我的观点

1.过度的代码框架设计不是好的设计,以我看来过于臃肿噶设计框架,大大降低了文件噶可读性(有时,你找一个别人写的文件都需要找半天这样效率是多低),文件命名和层级别嵌套太深。

2.需要一定基础工具类构建,而且需要这些类的扩展性很好。图片和网络类型库等等,还有定义的BaseActivity和BaseFragment。

3.很多大公司都会自己封装一些框架类,而不是用第三方的开源。这样的好处很明显,就是可以减少代码方法和避免一些不必要的适配,或者是多种库的优势的集合。但是缺点就是,可能会缺乏维护这样的框架,而且也不如成熟第三方开源更新得快。

4.是没可能完全解决耦合的,没有任何依赖是产生代码关联的,我们要只是降低代码耦合,所以现在出现了很多代码注入的框架(例如Dragger2),一些设计模式(MVP,MVVM)。

这里先说明一下,这是个持续更新的贴子,只是一些经验分享,如果有更(犀)好(利)的经(吐)验(槽)在帖子里回复。

可以给你们看一下现有的工程框架

简单介绍一下这套框架,不同于其他MVP,MVVM的代码框架。我们这套框架最主要通过功能分层。

1.base依赖于core和framework两个module

2.modules里面是有很多功能模块,都是通过独立的library,每个library都依赖于基础的base。

3.client是依赖了modules里面全部的功能library。

4.mi和baidu是属于多渠道特征加载入编译里面,也是依赖于base。

可以考虑一下这样的设计有什么特别的地方?

一个工程有多个modules的好处体现在,做业务就是功能叠加,倘若需要移除和添加功能模块,就要最低消耗下降低模块的耦合。

如果我想添加一个功能模块只需要在添加一个功能modules的libray,然后再client里添加依赖,client添加一个modules的调用入口和布局入口。(client是所有modules的调用入口,和整体布局,也是通过client来生成app),删除一个功能module也是同理。而且就算保留这些入口,直接移除modules也是不会出现崩溃的。

可以接入多个渠道的定制功能,每个渠道可以独立加入不同的模块(支付,登录,登录页特效等等)。

所有模块都可以共用core和framework提供的接口。

*2016.11.27更新

架构的示例图

****2017.3.6****

有些同学是想说崩溃率是怎么计算的,每次发版后计算  崩溃数/启动次数 

然后某直播公司的灰度是千分之三就可以发版了。

这只是个开端,如果简友有更好的框架推荐,可以留言地址,谢谢!

我建立了一个关于Android架构学习的群,里面可以进一步进行组件化学习的交流。

群号是316556016,也可以扫码进群。我在这里期待你们的加入!!!

相关文章

网友评论

  • fb5fbf432e63:modlue多了 会发生循环依赖和重复依赖这些问题。我觉得只有工程够大的时候 才需要用到
    CangWang:@心若浅沙 当你工程计划迭代一年,两年,你就会发现开始启动这种架构的优越性了
  • 黑白咖:client是壳入口
    modules是业务模块
    base是基类库
    core+framework是组件
    CangWang:@Vidic module编译的问题,其实有很多解决的办法,我这个系列有介绍一些,也有一些实用的,留到出书的资料了
    Vidic:modules 太多是真的影响编译速度,我司项目目前使用了6个module 每次编译时想哭
  • 黑白咖:签到
  • 会疼的小石头:想问下为啥modules图标的形状是个小碗了 里面是什么东西啊 各个moduled的代码吗?
  • 努力的我:加入群时拒绝后回复:请查看验证问题,并回答验证问题。没有看到问题什么
    CangWang:mac电脑应该看不到验证问题吧,window或者手机应该可以看到验证的问题,不好意思了。
  • 宇宙只有巴掌大:像我等 从上线 到 下线 整个app生命周期永远只有开发人员在盯着app 是不需要这么牛逼技术的。。。
    CangWang:@宇宙只有巴掌大 并不是什么牛的技术,只是发展的趋势
  • 敲代码的鸡:看不太懂 还是要留下脚印
  • 0751311fafad:留下脚印
  • 愚_猪:对你的框架的理解是:
    client相当于View层;
    modules则是独立业务的集合;
    Base相当于系统API的封装及提供独立功能的第三方库,该层与业务无关,可以直接适用于其他APP的开发;
    不知道是否理由有误?

    CangWang:@秋天10 后面的章节有
    a8f44d4615f5:@CangWang 你好!有demo吗?
    CangWang:@愚_猪 你好,client是主module,其他modules也是可以包含View的。base的理解的方向是正确的。想看深入的,欢迎看我的modulebus的demo
  • 精灵又来了:日活百万,崩溃率千分之三,日崩三千,这样的app敢让上线啊
    精灵又来了:@CangWang 那么如何通过日活量和崩溃率计算出崩溃次数,或者根据统计周期算出的崩溃率公式是什么呢?
    CangWang:@精灵又来了 你数学统计没学好吧,谁说一定每天每人都崩一次,统计周期还没算上吧
  • 4e78da03a0b7:从某渠道得到了慕课网的源码,但是技术有限,看不太懂,发现里面的分层结构跟你说的一毛一样
    CangWang:@最最最最醉人 请看我第二十编文章
    最最最最醉人:大兄弟,给一个看看
    CangWang:@4e78da03a0b7 哈哈,现在很多大型研发的APP都用这种架构思想,虽然我不是慕课网的
  • 361f3dc16084:所以,最后的大招是,crash上报抽样1/10么? :smile:
    CangWang:@o呮啙辷唸 哈哈,想多了,是有数据支撑才敢这样说的
  • __Berial___:所以说噶是个什么梗。
    CangWang:@__Berial___ 可以看看我这个系列的文章,会相信介绍这种module的架构的,谢谢。
  • ChienYi:學習學習
    CangWang:@ChienYi 相互学习罗

本文标题:[Android]如何做一个崩溃率少于千分之三噶应用app(1)

本文链接:https://www.haomeiwen.com/subject/prftsttx.html