Readhub App 上架 Google Play Store 实录及技术要点总结
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 实录及技术要点总结相关推荐
- Flutter App上架google play 流程以及遇到的坑(已经解决,App已经发布成功)
前言:大致流程如下,因为已经上传完了所以可能有些地方没有截图出来,但按照我下面的流程上传到谷歌商店是没问题的,如果没有注册谷歌账号和谷歌开发者账号的话可以点我看我前一篇文档,遇到的坑在最后,如果在过程 ...
- 谷歌APP上架被“判定”违反Google play的政策
作为谷歌APP上架的技术人员,对于Google Play的政策是非常熟知的,然而在上架过程中呗"判定"违反政策也是常有的事,谷歌 Play Store(Google Play) & ...
- ios app上架App Store需要多少费用?
经常收到咨询说ios app上架App Store需要多少费用?一两句话解释不清,ios APP上架涉及到方方面面,这里介绍下iosios app上架App Store需要的基本费用.APP开发的费用 ...
- ios html5 app上架,H5封装的IOS应用上架App Store被拒怎么办
原标题:H5封装的IOS应用上架App Store被拒怎么办 H5封装的IOS应用如果上要架到App Store几乎是无望,原因是苹果官方为了保证App Store应用商店上的APP优量和更好的体验, ...
- 2018最新苹果APP上架App Store流程(超详细)
2018最新整理iOS app上架app详细教程 上架iOS需要一个付费688的开发者账号,还没有的话申请一个或者借用. 申请苹果开发者账号教程 上架App Store之前是先安装到苹果手机测试调试好 ...
- 2023最新苹果APP上架App Store流程(超详细)
目录 上架iOS需要一个付费688的开发者账号,还没有的话申请一个或者借用. 申请苹果开发者账号教程 上架App Store之前是先安装到苹果手机测试调试好,app能正常运行再上架 iOS真机调试测试 ...
- iOS App 上架App Store及提交审核(Appuploader)
上架App Store审核分7步进行: 1.安装iOS上架辅助软件Appuploader 2.申请iOS发布证书(p12) 3.申请iOS发布描述文件(mobileprovision) 4.打包ipa ...
- 2018苹果App上架App Store审核指南要求
苹果APP审核很严格,有一套他们自己的标准,我们上架经常收到拒绝条款2.1.5.1这些就是因为不符合他们的审核要求,下面是苹果APP的审核指南.对APP的基本要求,在开发APP的时候参考这个指南,争取 ...
- 2018苹果App上架App Store审核指南要求
苹果APP审核很严格,有一套他们自己的标准,我们上架经常收到拒绝条款2.1.5.1这些就是因为不符合他们的审核要求,下面是苹果APP的审核指南.对APP的基本要求,在开发APP的时候参考这个指南,争取 ...
- google play store的app数据分析
google play store app数据源 提取码: 38jk google play store的app数据分析 1. 加载数据 加载数据分析使用的库 加载数据前,先用文本编辑器简单浏览一下数 ...
最新文章
- Xcode升级到8之后的一些需要我们手动配置的地方
- 重磅直播 | PointDSC:基于特征匹配的点云配准方法(CVPR2021)
- centos查看python版本_CentOS系统python默认版本由python2改为python3
- IDA反编译失败总结
- python visa模块_已经安装了pyvisa仍然报错没有模块
- 【java机器学习】词向量在贝叶斯中的概念
- Maven学习总结(23)——Maven常用命令介绍
- java应用程序做授权_java-为我的Web应用程序编写授权过滤器(JSF ...
- os.path的使用
- Spring定时器技术终结者——采用Scheduled注释的方式实现Spring定时器
- 自动化部署工具Fabric简介
- 安卓逆向入门----Andriod smail 与 Java 代码
- 修复Word打开文档默认显示两页的问题
- MailServer配置Foxmail
- apache 服务器的 Option Indexes,AllowOverride,Order Allow,Deny 详解
- java写netcdf_[转]netcdf入门
- BeagleBone Black Industrial系统更新设置一贴通
- VS2015一些使用技巧
- MySQL的Schema是什么?
- (转)深入Vue2.x的虚拟DOM diff原理