美文网首页如何做一个崩溃率少于千分之三噶应用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 后面的章节有
        秋天10:@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