小红书

小红书从最初1.0到现在目前4.7版本,历经两年,

功能演进

两年的

下载地址:

社区是小红书的核心价值之一,笔记是小红书社区的核心体现,毋庸置疑,笔记发布是小红书App的核心功能之一,我们一直在产品和技术上,优化我们的笔记发布流程和功能,包括我们将只支持分享单张

小红书的笔记展现形式和大多数其他的图片社交App类似,我们也支持图上标签功能。最初小红书图上标签是同其他App类似的黑色的标签。不过在3.0之后,小红书创造了独特的树状标签,给用户带来焕然一新的体验,同时也被其他App竞相模仿。新的标签给技术也带了很多的挑战,我们重新定义了标签的结构,以及标签的生成和展示。可以查看我以前的

技术选型进化

在技术选型上,这里主要讲一下网络层的框架选型升级和图片加载库的升级。

网络框架的演进

App的最初框架是由钟大侠一人花了10来天完成,包括基本的网络请求框架、App大体的架构以及一些主要的功能。最初时候选择框架的原则就是选择自己最熟悉的,因此我们采用了 async-http 这套框架作为我们底层的网络请求框架,框架完成了网络的异步请求与回调,能够满足当时的

然而仅仅不到半年之后,我们就决定了使用Volley来替换。替换以后,底层的网络请求

与此同时,小红书的api请求也在不断进行

图片加载框架的演进

小红书的笔记是以图片加文字为主体的内容,因此会有大量的图片显示需求。和网络框架选型类似,早期选择了比较熟悉的UIL来做图片加载,可以同时支持本地图片和网络图片的加载,在当时可以满足我们的基本需求。

15年初,我们开始使用更加高清的图片,随之加载速度变慢,占用更多的内存,而且这个时候UIL的作者基本很少维护。我们开始调研使用新的图片加载框架。此时Fresco刚刚出来,还不太稳定,当时没敢用。给我们的可选项有Picasso和Glide两个可选项,Picasso比较轻量,但是相比于UIL在性能上没有太好的提高。Glide代码量较大,不过它会在本地保存多份缓存(原始图片和实际显示尺寸的图片),这样加载本地缓存的时候,可以直接显示大小刚好的尺寸,减少解码的时间,因此会比UIL要快很多。

15年下半年,我们需要支持gif的动画显示,而Glide对动画的兼容性又不是特别好,这个时候我们直接切到了Fresco。同时Fresco对

我们使用的这几个图片加载框架,每个框架的使用都有非常大的区别,这就导致迁移的时候工作量巨大。为了降低迁移成本,我们封装了自己的ImageLoader,在ImageLoader中来实现具体的图片加载,这样保证在迁移的时候,最大程度的降低代码的改动(不过在迁移到Fresco的时候还是改动巨大,因为我们不能直接使用ImageView了o(︶︿︶)o。

推送的升级

推送,我觉得也有必要说一说。最初我们快速选用了

架构升级

由于一直以来在业务开发占用的时间比较多,目前App的整体架构没有做过太大的改变。

在Adapter的使用方面,我们将ListView或RecyclerView的Item放到单独的ItemHander,这样可以在不同的页面可以通过将不同的Item组装到一起,从而满足不同地方的需求。这样可以在ListView或RecyclerView来复用相同的代码,提高代码的可维护性。

前面网络层说到我们的错误处理,这个也是做过比较大的升级。最初时候,网络错误、http请求错误、后台和客户端的错误,都分别在不同的层级进行处理。目前我们在发生错误的时候将错误全部以Exception的方式抛出,最后在上层进行错误的处理。

App中的状态

App中占比很大的部分是从网络请求数据,获得数据后进行展示,还是以MVC为主。在一些模块的部分地方,做一些da

其他周边进化

我们的开发最初是使用Ecl

APK最初大约只有5M,历史最高峰达到了23M,在App减肥上我们也做了一些努力,主要是使用tinypng压缩图片,so只保留arm的支持。项目的复杂也使得每次

现在持续集成还是蛮火的,自然我们也在用。最初的时候,我们每天需要手动打包,打完包之后打开fir的

未完待续

本文介绍了我们两年来的一些大的变化,通过一篇

现在我们的Android还有坑位,如果你有兴趣,就赶紧发送简历来占坑吧,我的邮箱是: msang#xiaohongshu.com (请手动替换#为@)

本文同步发布于小红书技术REDHacker ,可如下扫描red-hacker 进行关注。

Android小红书发帖api接口,小红书Android客户端演进之路相关推荐

  1. Android开发规范:API接口安全设计规范

    公众号[国民程序员]回馈粉丝福利: 现金红包和送书活动火热进行中,点击参与! 我的新书<Android App开发入门与实战>已于2020年8月由人民邮电出版社出版,欢迎购买. 书籍详情请 ...

  2. Android小说阅读器,追书神器API接口

    追书神器API接口 注:(所有的接口都是Get请求) 所有地址前要加上  api.zhuishushenqi.com 1. 获取所有分类 类型 值 接口地址 /cats/lv2/statistics ...

  3. android 天气接口简书,天气API接口说明

    天气API接口稳定的确实没有,除非是天气官方提供的, 但是我观察了下,要是合作伙伴才有开放的可能. 其他的,例如:百度 APIStore.一些同学在其他网站上抓包下来的接口,以及什么各种收费的 API ...

  4. gradle 构建 Smack 报错:Can't find android.jar for 8 API. + steps for building android platform

    [0]README 1)本文旨在解决 Can't find android.jar for 8 API. Please install corresponding SDK platform packa ...

  5. 最新小红书解析api接口php源码

    2023最新小红书api解析接口php源码分享 请求方式:get 请求接口:eeapi.cn(需请自行注册免费申请) 返回数据格式:JSON <?php/*小红书解析 */ //*****执行代 ...

  6. android 调用系统短信接口开发,聚合数据Android SDK 短信api接口验证演示示例

    1.到libs聚合SDK是聚合数据平台,为移动开发者提供的免费数据接口.使用前请先到聚合平台(http://www.juhe.cn/)注册,申请相关数据. 2.下载聚合数据SDK,将开发包里的smsc ...

  7. 小红书算法sign php,小红书API签名算法分析

    小红书APP API接口使用url中的sign参数和header中shield参数来校验请求的有效性,我们随便看一个API请求: GET https://www.xiaohongshu.com/api ...

  8. Android的sdk、api及工程目录说明

    SDK下包的说明 1:add-ons:Android开发需要的第三方文件和软件库 2:docs:Android的文档.包括开发指南.API参考.资源等 3:extras:扩展的附加包 4:platfo ...

  9. android sdk 目录说明,Android的sdk、api及工程目录说明

    SDK下包的说明 1:add-ons:Android开发需要的第三方文件和软件库 2:docs:Android的文档.包括开发指南.API参考.资源等 3:extras:扩展的附加包 4:platfo ...

最新文章

  1. 实现基于Keepalived主从高可用集群网站架构
  2. 初探 Vue 生命周期和钩子函数
  3. MVC扩展控制器工厂,通过继承DefaultControllerFactory来决定使用哪个接口实现,使用Ninject...
  4. html教程是语音版,【HTML教程】HTML 语言简介
  5. thinkphp 内置函数详解
  6. 引用数据类型的方法调用
  7. drupal建站系统_容器将如何塑造Drupal生态系统
  8. springBoot学习(二) 基础运行原理
  9. python实训day5
  10. Spring Boot(13)——使用RestTemplate
  11. Javascript基础之-强制类型转换(三)
  12. python基础篇——函数
  13. 赋能智慧交通的5G关键技术
  14. 5g局域网传输速度_4G5G和上网带宽与下载速度的换算方法
  15. 全触控HIFI级音质,击音Super HD II,你喜欢的样子我都有!
  16. MongoDB——文档操作(插入文档)
  17. 程序员技术面常用知识点
  18. weinre调试环境搭建
  19. ImportError: DLL load failed while importing win32api
  20. 我的计算机找不到资源管理器了,我的电脑工具的工具选项,不见了?怎么办?

热门文章

  1. Apache Thrift 官网学习 一 基本概述与入门
  2. android nfc公交,安卓手机怎么刷公交、地铁 移动NFC手机交通业务介绍
  3. exlc如何对比_excel表格图形数据比较-Excel如何做柱状对比图
  4. 东莞蒙德服务器维修,蒙德驱动器变频器维修常见报警:OC1 OC2 OC3 OC4
  5. 11支付功能≠支付系统:微信支付宝通用支付系统开发实战
  6. HAProxy 简介及配置文件详解
  7. realpath和access函数浅谈
  8. java静态方法mult_学会使用函数式编程的程序员(第3部分)
  9. Java zip解压工具类
  10. 关于近期工作中遇到的各种问题总结