七猫日志接收系统之客户端埋点 SDK

七猫日志接收系统系列文章将会向大家介绍七猫日志接收系统及相关的埋点 SDK,总共分为四篇, 本文为系列的第三篇,将介绍客户端埋点 SDK 的实现,主要涵盖了埋点日志的采集、存储、上传等一系列流程。…

纵横Android阅读器-绘制优化

随着纵横小说app各模块的迭代升级,阅读器所承载的功能也日益复杂。由于诸多历史遗留问题,阅读器内控件的绘制和点击实现方式变得相当繁琐,导致即便是对阅读器的微小调整,也需要耗费较长的开发周期,尤其是在当前一周一版的发布节奏下。因此,阅读器的需求变得难以快速响应,很难实现每周小步迭代。在本文中,将探讨纵横小说阅读器中可交互控件在简化现有实现方式上所做的一些尝试。…

七猫日志接收系统之架构设计(上)

七猫日志接收系统系列文章将会向大家介绍七猫日志接收系统及相关的埋点 SDK,总共分为四篇,本文为系列的第一篇,将带大家一起回顾七猫 2020 年至今,七猫日志接收系统近四年来的演化历程。如果您之前未了解过统计埋点系统,强烈推荐您阅读本站发布的七猫统计埋点实践一文。…

Android端有声书字幕交互实现及优化全解析

目前在七猫免费小说 App 端,音频内容主要有 TTS 和有声书两种类型,TTS 由于天然存在文字内容,可以满足用户边听边读的需求,而有声书目前则只能输出声音。为了丰富用户的有声书使用体验,所以我们考虑为有声书增加字幕功能。在交互形态上,字幕功能存在一些比较特别的点,本文记录下它们实现和优化的过程,在迭代工作中大家遇到的需求各不相同,这里我们屏蔽掉大部分业务细节,主要聚焦于解决问题思路的形成及对方案的优化过程,希望能给大家带来一点收获。…

Flutter自定义引擎-编辑器两端对齐

由于我们编辑器有自定义排版的需求,所以我查看了dart framework层关于RichText的排版与绘制的流程,发现都是在native实现,也就是在flutter engine中使用C++实现的.所以我们是需要下载flutter engine源码,修改调试,并把自定义的flutter engine接入到我们的项目中.…

我在七猫做阅读器——排版篇

随着产品不断迭代,阅读器作为一个占据用户99%使用时长的模块,承载了愈加复杂的业务功能。开发一个能供人看书的阅读软件并不困难,但是如何打造一个高可用的阅读器却是门道颇深。本篇文章结合本人阅读器新架构实操经验,为大家阐述开发设计中的诸多细节,希望能对大家有所帮助。…

Rxjava从0到1

Rxjava框架在七猫的安卓客户端项目中几乎无处不在,框架的优点非常明显:链式编程、丰富的操作符、与其他主流框架的互动(retrofit、room等)、函数式编程的思想让异步事件看起来像同步事件一样符合人们的思维习惯,得益于这些优点也是被Google官方推荐使用。但欲戴王冠必承其重,从某种程度上来说,Rxjava的上手比较难的,在看了源码及Rxjava相关的文档后,有了耳目一新的理解,给大家带来一些分享,希望可以让大家对这款优秀的框架有不一样的认识。…

Android-ANR:探索主线程到底卡在哪了

ANR 问题一直是 Android 性能优化的重点问题,当主线程消息调度不及时或者执行耗时方法时轻则造成卡顿,重则发生ANR,严重影响用户的体验。故而分析发生ANR时主线程在过去一段时间内调度的消息和执行的方法无疑是定位ANR原因的突破口,基于这两点,我们开发了一套主线程消息调度耗时采集和耗时方法采集工具,本文便是阐述相关的原理和实现。…

阅读器优化—视图优化实践

随着免费小说业务快速的发展,免费小说客户端的优化也逐渐进入深水区,在2020年我们开始整体阅读器优化的调研工作。阅读器视图控件作为整个阅读器中业务交互最复杂,业务变更最频繁的组件,也是最贴近用户的组件,却面临数据UI耦合严重,广告与阅读器强耦合,代码的可维护性和可拓展性、性能都面临越来越难的境地。越来越多样化的业务视图、视频流化的广告视图,更多的业务刷新场景,多个业务模块数据视图都在阅读器中交汇,要求我们必须优化好阅读器视图,提升阅读器视图控件的性能,代码拓展性。本文主要讲述了免费小说阅读器视图控件重构的主要思路及实践经验。…

七猫免费小说 APP 内存优化实践(一)

2022年以来,七猫客户端基础组加强了对内存问题的重视,对于内存优化做了很多工作。通过线上及线下的监控手段,有效的解决了已有的线上问题,同时能够尽早发现尽早解决新增的内存问题。本文主要阐述我们团队做了哪些工作,为什么做以及如何做的(侧重于安卓端)。…

七猫客户端 DevOps 之路

本文概述了七猫手机客户端 DevOps 流水线设计与实现思路,整体看下来非常简单,这主要得益于流水线这一模型本身非常强大且富有生命力,我们在 Web Service,云计算,以及大数据的流式计算等身上都看到了这一思维模型。七猫客户端 DevOps 流水线的设计就是遵循 Unix 管道的理念,将业务功能封装成独立的原子服务,通过业务流程将原子服务进行串联,从而能够动态的拼装业务流程,快速建立新的流水线。希望通过本文对客户端 DevOps 流水线的设计与实现的介绍,能够给大家的日常开发工作带来一些启发。…

制作属于自己的第一本EPUB电子书

通过制作一本EPUB书籍和了解其内部结构,可以让我们对EPUB这种格式的电子书有一个较为全面的了解和认知,今后不但可以编写属于自己的.epub格式的书籍,而且可以根据其结构去编写解析EPUB格式的阅读器和制作用于测试的书籍。希望此篇可以带你开启深入研究EPUB电子书的大门~…

java 字节码管理单独线程

本片文章讲述了如何使用 java 字节码技术优化线程创建。管理单独线程也是内存优化手段之一,使用线程池替代 new Thread 能起到复用线程、减少线程创建数量的作用,从而有效地降低因线程数量超限导致内存溢出发生的概率。…

七猫广告sdk激励视频流量优化

目前公司正在搭建广告ADX平台,使用自研的七猫SDK渲染图文、视频广告,用户在阅读器内看书时,为了节省用户流量,视频广告在移动网络下不会播放视频,只会显示封面,但是用户选择看激励视频时,遇到了一些问题。下面分析下几种不同方案各自存在的问题,以及我们最后的解决方案。…

七猫免费小说App网络状态监听框架的升级

七猫一直坚持“对用户好一点”的经营理念。作为七猫的主打App,在产品开发设计的过程中也一直在遵循这一理念。为了能够给用户带来更好的交互体验,我们需要准确的捕获App使用过程中设备的网络状态,及时的根据当前的网络环境做相应的操作。…

安卓JVM线程监控

七猫免费小说客户端团队对线上崩溃数据非常关注,线上崩溃率维持在万分之一是安卓客户端 2021 年度目标之一。所以我们相当重视线上崩溃率 Top 20 的问题,会花大量时间和精力去排查解决,而 OOM 一直占领着 Top 20 好几个位置。OOM 问题造成的因素非常多,比如内存泄漏,静态对象内存占用大,缓存过多,大图内存过大,线程超限,FileDescriptor 未释放超过限定的 1024个等因素。本文就线程数量问题讲述了安卓客户端团队是怎么监控线程创建,分析线程创建来源的。…

七猫 iOS 启动时间优化

随着产品的迭代,产品功能越来越多, App 大小越来越大,导致越来越多的体验和性能问题,其中用户首先感知的肯定是启动速度。传统的启动优化有减少不必要代码,懒加载动态库,任务优先级划分等,此类相关优化的策略已经很普遍了,这些优化主要是从减少主线程任务的角度来出发,很难再做出大的提升。…

浅析 Epub 格式及解析设计

随着移动互联网的发展进步,移动终端电子阅读已经成为人们生活中必不可少的精神娱乐。七猫免费小说旨在为国人提供免费好看的小说、图书,丰富人民的精神文化。那么,移动终端如何能够提供好的内容、样式排版?这就需要对电子书格式进行深入的研究,掌握常见的EPub电子书格式、实现可定制化、差异化、掌握电子书的标准规范,基于标准规范化设计自己的电子书解析引擎,可实现跨平台阅读。…

七猫 iOS 组件化实践

传统 App 架构设计更多强调的是分层(例如网络层、UI 层等),但是随着业务的发展,系统越发复杂,App 内各业务耦合严重,边界越来越模糊,代码质量、开发效率都会受到影响。通过组件化架构,可以进一步明确业务职责及边界、减少依赖、优化编译速度(二进制)、独立测试等,以支持多条业务线独立、并行推进,提升研发效率。…

七猫Android安全模式的探索及实践

试想一下,如果项目上线出现大面积的用户崩溃以及不可用,那简直是研发同学的噩梦,头发又要大把大把掉啦。如果应用在启动时期,因为第三方SDK初始化出错而导致连续崩溃,而HotFix无法生效 。极其糟糕的启动连续崩溃体验,你说用户最终会卸载吗?那么面对这些问题我们又该如何解决呢?…