Readhub 是一个专注于科技新闻实时分享的网站,从一开始发布到现在一直都是我获取信息的重要渠道,目前只有网页端和小程序可用,一次偶然的灵感让我决定自己做一个客户端。

成品展示:JReadHub

第一步:抓包

想要获取数据,首先要知道获取数据的 API,在没有任何官方文档的前提下,只有抓包能够解决这个问题。

工具: Fidder 4

使用方法: Fiddler - 超好用的http抓包工具使用介绍

抓包结果:

public static final String HOST = "https://api.readhub.me/";// 热门话题列表
@GET("topic")
Observable<DataListBean<TopicBean>> getTopicList(@Query("lastCursor") Long lastCursor,@Query("pageSize") int pageSize
);// 其它模块新闻 type
public static final String TYPE_NEWS = "news";// 科技动态
public static final String TYPE_TECHNEWS = "technews";// 开发者资讯
public static final String TYPE_BLOCKCHAIN = "blockchain";// 区块链快讯
public static final String TYPE_JOBS = "jobs";// 招聘详情// 其他模块新闻列表
@GET("{type}")
Observable<DataListBean<NewsBean>> getNewsList(@Path("type") @Constants.Type String type,@Query("lastCursor") Long lastCursor,@Query("pageSize") int pageSize
);// 即使查看
@GET("topic/instantview")
Observable<InstantReadBean> getTopicInstantRead(@Query("topicId") String topicId);// 话题详情
@GET("topic/{topic_id}")
Observable<TopicDetailBean> getTopicDetail(@Path("topic_id") String topicId);// 相关话题
@GET("topic/related")
Observable<List<RelevantTopicBean>> getRelateTopic(@Query("entityId") String topicId,@Query("eventType") int eventType,@Query("order") long order,@Query("t") long timeStamp);// 最新消息
@GET("topic/newCount")
Observable<NewTopicCountBean> getNewTopicCount(@Query("latestCursor") Long lastCursor);
复制代码

第二步:开发

特点

  • 采用 Google Material Design 风格
  • 采用 MVP + dagger 2 架构进行解耦
  • 网络请求使用 Retrofit + RxJava
  • 本地数据库采用 Room + RxJava
  • 主题切换,支持夜间模式
  • 集成 Tinker 并支持应用内更新
  • 侧滑返回
  • 支持 CustomTabs
  • 新话题悬浮提示
  • 使用矢量图减少安装包体积

项目预览——夜间模式

起始页 主菜单 首页
即时查看 话题详情 文章网页
本地搜索 设置 关于

项目预览——蓝色主题(默认)

起始页 主菜单 首页
即时查看 话题详情 文章网页
本地搜索 设置 关于

使用到的第三方开源库

项目名称 简介
RxJava 一个专注于异步编程与控制可观察数据(或者事件)流的 API
RxAndroid 在 Android 中使用 RxJava
Retrofit HTTP 请求工具库
ButterKnife 强大的注解框架,提供视图和事件绑定
Dagger 依赖注入框架
Fragmentation 强大的 Fragment 管理库
ExpandableLayout 支持展开和收缩子 View 的 Layout
FlowLayout Android 流式布局,支持单选、多选等,适合用于产品标签等
leakcanary 使用于 Android 和 Java 和内存泄漏检查工具
AgentWeb Android WebView 框架
Android-HeaderAndFooterRecyclerView 支持添加头部和尾部的 RecyclerView
Android-Debug-Database 用于调试 Android SQLite 和 Shared preferences 的库
Bugly 帮助开发者快速发现并解决异常,同时掌握产品运营动态,及时跟进用户反馈
Tinker Android 热修复解决方案,支持 dex,library 和资源更新且不用重新安装 app
walle Android Signature V2 Scheme 签名下的新一代渠道包打包神器

使用到的工具/网站

网站名称 简介
Iconfont 阿里巴巴矢量图标库,提供了本项目中的大部分矢量图
aconvert 在线调整图片大小(PNG, JPG 和 GIF)
convertio 在线图像文件转换器,支持 SVG 转换成 PNG
logoko 在线 logo 设计
图帮主 在线平面设计
shields metadata 图标设计
compresspng 在线压缩 PNG 图像

感谢

  • ReadHub
  • Readhub-Android
  • Awesome-WanAndroid
  • Toutiao

第三步:申请各大应用市场的开发者账号

要上架到应用市场,必须要申请相应平台的开发者账号,目前国内主流的应用市场开发者账号申请地址如下:

  • Google Play (注册需要绑定一个可用于境外支付的信用卡,费用是 29 美刀)
  • 豌豆荚、PP 助手、YunOS 应用商店等(首先需要实名认证,然后需要申请 App 的软件著作权或者上传一份开发者声明,本 App 因为该平台不允许个人上架新闻类应用被拒绝。。。)
  • 腾讯应用宝(实名认证 + 软件著作权)
  • 酷安市场(之所以叫酷安,是因为他们只接受比较库的应用,再次被拒绝。。。)
  • 小米应用市场(实名认证 + 。。。)

第四步:打包发布

多渠道打包工具: 强烈推荐多渠道打包神器 —— walle

用法: Walle多渠道打包&Tinker热修复

总结

一个 App 从构思到上架,还是需要花不少精力和时间的,如果没有充足的业余时间,即使功能简单的 App 也是不容易做好的。如果能在这个过程中感受到亲自打磨产品的激情和乐趣,那将会对产品质量产生无尽的力量,希望每个开发者都能做出自己心仪的 App!

最后,如果文章内容对你有帮助,欢迎大家到 Github 给我个 Star:JReadHub,或者对这个库有什么改进的建议,给我提 Issue 或者 PR,大家共同进步!

转载于:https://juejin.im/post/5c81ce3ae51d4539b639b32e

Readhub App 上架 Google Play Store 实录及技术要点总结相关推荐

  1. Flutter App上架google play 流程以及遇到的坑(已经解决,App已经发布成功)

    前言:大致流程如下,因为已经上传完了所以可能有些地方没有截图出来,但按照我下面的流程上传到谷歌商店是没问题的,如果没有注册谷歌账号和谷歌开发者账号的话可以点我看我前一篇文档,遇到的坑在最后,如果在过程 ...

  2. 谷歌APP上架被“判定”违反Google play的政策

    作为谷歌APP上架的技术人员,对于Google Play的政策是非常熟知的,然而在上架过程中呗"判定"违反政策也是常有的事,谷歌 Play Store(Google Play) & ...

  3. ios app上架App Store需要多少费用?

    经常收到咨询说ios app上架App Store需要多少费用?一两句话解释不清,ios APP上架涉及到方方面面,这里介绍下iosios app上架App Store需要的基本费用.APP开发的费用 ...

  4. ios html5 app上架,H5封装的IOS应用上架App Store被拒怎么办

    原标题:H5封装的IOS应用上架App Store被拒怎么办 H5封装的IOS应用如果上要架到App Store几乎是无望,原因是苹果官方为了保证App Store应用商店上的APP优量和更好的体验, ...

  5. 2018最新苹果APP上架App Store流程(超详细)

    2018最新整理iOS app上架app详细教程 上架iOS需要一个付费688的开发者账号,还没有的话申请一个或者借用. 申请苹果开发者账号教程 上架App Store之前是先安装到苹果手机测试调试好 ...

  6. 2023最新苹果APP上架App Store流程(超详细)

    目录 上架iOS需要一个付费688的开发者账号,还没有的话申请一个或者借用. 申请苹果开发者账号教程 上架App Store之前是先安装到苹果手机测试调试好,app能正常运行再上架 iOS真机调试测试 ...

  7. iOS App 上架App Store及提交审核(Appuploader)

    上架App Store审核分7步进行: 1.安装iOS上架辅助软件Appuploader 2.申请iOS发布证书(p12) 3.申请iOS发布描述文件(mobileprovision) 4.打包ipa ...

  8. 2018苹果App上架App Store审核指南要求

    苹果APP审核很严格,有一套他们自己的标准,我们上架经常收到拒绝条款2.1.5.1这些就是因为不符合他们的审核要求,下面是苹果APP的审核指南.对APP的基本要求,在开发APP的时候参考这个指南,争取 ...

  9. 2018苹果App上架App Store审核指南要求

    苹果APP审核很严格,有一套他们自己的标准,我们上架经常收到拒绝条款2.1.5.1这些就是因为不符合他们的审核要求,下面是苹果APP的审核指南.对APP的基本要求,在开发APP的时候参考这个指南,争取 ...

  10. google play store的app数据分析

    google play store app数据源 提取码: 38jk google play store的app数据分析 1. 加载数据 加载数据分析使用的库 加载数据前,先用文本编辑器简单浏览一下数 ...

最新文章

  1. Xcode升级到8之后的一些需要我们手动配置的地方
  2. 重磅直播 | PointDSC:基于特征匹配的点云配准方法(CVPR2021)
  3. centos查看python版本_CentOS系统python默认版本由python2改为python3
  4. IDA反编译失败总结
  5. python visa模块_已经安装了pyvisa仍然报错没有模块
  6. 【java机器学习】词向量在贝叶斯中的概念
  7. Maven学习总结(23)——Maven常用命令介绍
  8. java应用程序做授权_java-为我的Web应用程序编写授权过滤器(JSF ...
  9. os.path的使用
  10. Spring定时器技术终结者——采用Scheduled注释的方式实现Spring定时器
  11. 自动化部署工具Fabric简介
  12. 安卓逆向入门----Andriod smail 与 Java 代码
  13. 修复Word打开文档默认显示两页的问题
  14. MailServer配置Foxmail
  15. apache 服务器的 Option Indexes,AllowOverride,Order Allow,Deny 详解
  16. java写netcdf_[转]netcdf入门
  17. BeagleBone Black Industrial系统更新设置一贴通
  18. VS2015一些使用技巧
  19. MySQL的Schema是什么?
  20. (转)深入Vue2.x的虚拟DOM diff原理

热门文章

  1. MAC直接的剪切快捷键
  2. html div里里h标签居中,html之块级标签h系列,div
  3. flea-common使用之本地国际化实现
  4. 编码器如何推流给虎牙直播平台
  5. mysql ndb 关闭,监控mysql、ndb进程重启
  6. Java 10大骚操作写法,亮瞎boss的双眼!
  7. 国内第一本许可式订阅E-mail营销书籍
  8. python身高体重程序代码_python EM算法4(身高体重数据集)
  9. java 导出word文档
  10. 温度传感器的分类及比较