一、前言

好长时间没写blog了,主要还是工作上的事有点多,周末又得在家开发自己的app,所以时间真的不够用了,当然今天这篇文章主要就要说一下,工作两年的我如何从产品角度去做一个app,以及app的发布流程等。

二、支持我

在开始讲解这个项目之前,希望能够先去各大市场下载一个apk看看,首先是为了支持我一下,其次呢就是我在后面会介绍一些功能和技术实现,所以先使用一下,这样会找到对应的功能点,谢谢

二维码扫描下载:

1、豌豆荚市场:搜索:天真无谐

PC上的链接:http://www.wandoujia.com/apps/com.wjdiankong.happymahua

2、应用宝市场,搜索:天真无谐

PC端链接:http://sj.qq.com/myapp/detail.htm?apkName=com.wjdiankong.happymahua

3、百度手机助手,搜索:天真无谐

PC端的链接:http://shouji.baidu.com/soft/item?docid=7864245&from=&f=search_app_%E5%A4%A9%E7%9C%9F%E6%97%A0%E8%B0%90%40list_1_title%401%40header_all_input

4、360手机助手,搜索:天真无谐

PC端链接:http://zhushou.360.cn/detail/index/soft_id/3052244?recrefer=SE_D_%E5%A4%A9%E7%9C%9F%E6%97%A0%E8%B0%90

5、Google Play Store市场,搜索:天真无谐

PC端链接:https://play.google.com/store/apps/details?id=com.wjdiankong.happymahua_gp

三、项目背景

首 先介绍一下自己的项目吧,这个项目叫做:天真无谐,主要是展现一些笑话类的资讯(包括段子,图片,Gif),类似于糗事百科那样的app,这个项目的启动 时间是2015年02.14,也就是情人节那天,所以到现在正式上线差不多6个月了,都是周末在家弄的,所以算起来大概用了1个多月的时间。当时也没想说 做了这个app来赚钱啥的,就是当时感觉自己快工作两年了,应该有一个自己的app了,而且也是需要熟悉如何开发一个app,以及将其发布的流程。

四、项目介绍

再 来大体介绍一下技术实现吧:这个项目的Server端采用的是SSB框架,主要还是SpringMVC技术,感觉比Struts好用多了,方便快捷,本身 不是做Server端的,主要是大学毕业设计用到了Server端的技术,所以这里就在复习一下啦,数据库用的是MySql。

至于Client端,详细分析一下,因为是自己的项目,当时没有想到找小伙伴们合作弄,所以自己就身兼数职:产品狗,设计狮,程序猿,测试猫,运营猪等角色,下面就来详细介绍一下每个角色我是怎么扮演的,不过先来看一下app的功能和界面吧:

1、功能介绍

1)、应用的开启页面

这个页面内容就是:醒人每句

就是用户登录之后可以设计自己的最喜欢的座右铭:后台随机下发一个用户的语句用于每次用户的展示。

想法:能够提高用户的成就感,让用户感觉自己说的话可以被其他人看到。很开心

2)、首页

首页已经采用大众化的轮播切换的新闻样式,这里有六个Tab:

最新推荐:最新的搞笑图片+段子

段子手:在用户不是Wifi的情况下这个Tab会优先展示,他只有文本笑话,不会太消耗流量

搞笑:就是搞笑图片的Tab

清纯妹子:就是妹子图片(你们懂得)

性感美女:就是性感美女图片(你么也是懂得)

动态图:就是Gif搞笑的动态图(这个比较消耗流量,所以在Wifi的情况下会调节他的顺序)

所以后台会对这些Tab的展示顺序,展示开关做控制的

3)、详情页

详情页面就是可以进行评论内容,点赞啥的动作了,而且点击图片可以进行大图浏览

这个页面没什么好说的啦

4)、用户中心页面

这个页面就是用户中心,用户在这里可以编辑自己的信息,同时可以查看自己的历史行为动作

也是大众化的页面

5)、设置页面

这个页面也是大众化的页面,可以设置一些属性等功能

当然还有其他页面,这里就不在详细说明了

             

        

2、各个角色说明

好了。大体上看完了功能了,下面就来给大家分享一下我是如何扮演这些角色的:

1)  第一个角色:产品狗

关 于产品狗这个角色,其实很模糊的,大家普遍认为就是如何将一个app设计的让用户喜欢用就OK了,主要就是有想法,能了解用户的喜好和行为,所以关于这个 角色,我们都可以去胜任的,当然只是胜任的成功与失败的问题了。我在设计这个app的时候,主要是借鉴(说得好听点,不好听就是抄袭)了其他很多类似 app的功能,但是我们不能只顾一味的借鉴呢,也要做的比他们好,比他们有亮点才行了,不然就是抄袭了。哈哈~~关于亮点这里有三个地方:

1.1)、保存Gif的帧图片

播放Gif图片的时候可以暂停/继续,然后可以保存每帧的图片,因为我在看其他Gif类的app的时候,我有时候真的想去截取当前动画的图片,所以我就加上了这个功能。

1.2)、增加语音播报功能

就是在对段子笑话的时候,有时候我们很不想去阅读段子,文字太多,看着也烦。所以这里就提供了语音自动播报文字的功能,而且增加了各地方言语音,更是搞笑(特别是河南和粤语,我自己真的每次都在听,很好听的)

1.3)、本地图片/Gif保存文件的查看

这个功能其实我当时在看糗百的时候想到的,图片下载功能都支持是没有问题的,但是下载之后我们如果再想去找的话,可能需要去指定的文件夹去看,那样很是费劲的,如果在app内部就可以查看我已经下载好的图片很是方便的。

所以上述的三点也算是我的app的三个亮点,也希望大家能够多多支持,我也是从产品角度去考虑问题的。关于其他的功能的话,这里就不在多说了,都是大同小异,没什么好说的了。

2) 第二个角色: 设计狮

关于设计师这个角色,其实不想产品狗那么好扮演了,因为他不是所有人都能搞定的,首先你得有艺术感,其实你得会一些设计工具。那么我是怎么搞的呢?

其实也不难,为啥呢?因为我很有艺术感的(真的,好多人都这么说的),那些设计工具呢,大学的时候辅修的是美术系,所以PS就不难了(简单的功能还是可以的)

不过有些图片资源还是需要从网上查找的,这里提供一些app的图片资源地址,有些是免费的,有些是收费的:

希 望能够帮到你们呢,但是有些图片我们弄下来之后不一定是我们想要的,比如一个icon的我们想改变他的颜色,那么这时候就需要PS工具来实现了,好吧,这 里我不可能说怎么改,因为篇幅太长了,所以大家学习PS是没有坏处的,至少可以把自己ps的能给人看的样子呢。当然最好还是能找一个设计师小伙伴,因为至 少他们专业点,我是因为当时这个项目比较封闭,不想惊动太多人啦。所以就自己亲自操刀了。哈哈~~

3) 第三个角色:测试猫

这 个角色其实和产品狗一样,任何人都可以胜任,只要会写一些测试的case就可以了,或者是不写,因为app是你开发的,很多功能点你知道哪里可能会出 bug..不过也有很多隐藏的bug不好复现,所以自己得多用呢,我是每次都在公交车或者地铁里在用,白天用,晚上改bug...生活如此惬意

4) 第四个角色:运营猪

这个角色怎么说呢?其实也是可以都胜任的,而且这个角色也是有点模糊的,他就是负责用户的行为数据的收集,然后分析用户的行为数据等,以及还负责发包的流程。关于数据的收集,这里就不多介绍了。国内的话一般是友盟统计,国外的话一般是GA统计
关于发包的流程我后面会详细说

5) 第五个角色:程序猿

终于说道这个角色了,满血复活啦,因为我就是干这个的,不得详细的介绍一下呀,而且我也是很无私的,介绍我在这个项目中用到的技术,哈哈~~虽然不是很高深的技术:
1、开源控件
在这个项目中我用到的开源控件很多,这里我就来详细介绍一下
1)首页:
1.1)首先是下拉刷新数据的,现在很多app都是采用顶部动画的样式,但是Google提供了自己的下拉刷新控件, 个人感觉很好用,也很酷炫的:
SwipeRefreshLayout
地址:https://github.com/hanks-zyh/SwipeRefreshLayout
1.2)首页轮播的Tab样式,这个网上也是很多例子
PagerSlidingTab
地址:https://github.com/astuetz/PagerSlidingTabStrip
1.3)首页的悬浮快捷菜单,类似于Google+
FloatingActionsMenu
地址: https://github.com/telly/FloatingAction
1.4)ListView的展示动画
ListViewAnimations
地址:https://github.com/nhaarman/ListViewAnimations
1.5)TextView中的文本自动对齐
JustifyTextView
地址:https://github.com/xsingHu/JustifyTextView
1.6)图片的圆形处理
CircularImageView
地址:https://github.com/lopspower/CircularImageView
1.7)数据加载样式
ProgressWheel
地址:https://github.com/nithinkmichael/Android-ProgressWheel-master
1.8)选择icon的翻转动画
FlipImageView
地址:https://github.com/castorflex/FlipImageView
2)详情页
2.1)播放Gif的控件
gifdrawable
地址:https://github.com/nemothekid/gifdrawable-android
3)设置页
3.1)菜单点击的水波纹效果,类似于360安全卫士的菜单
RippleEffect
地址:https://github.com/traex/RippleEffect
3.2)自定义的滑动开关,类似于苹果的开关效果
SlideSwitch
地址:https://github.com/Leaking/SlideSwitch
3.3)显示数值的进度条样式,在设置字体大小样式的时候出现
discreteSeekBar
地址:https://github.com/AnderWeb/discreteSeekBar
3.4)带有数值的进度条样式,在升级的的时候会出现
NumberProgressBar
地址:https://github.com/daimajia/NumberProgressBar
3.5)动画样式的对话框
SweetAlertDialog
地址:https://github.com/lzyzsd/SweetAlertDialog
3.6)清除缓存的对话框
SmoothProgressBar
地址:https://github.com/castorflex/SmoothProgressBar
4)本地图片浏览页面
4.1)瀑布流样式
StaggeredGridView
地址:https://github.com/maurycyw/StaggeredGridView
5)图片浏览页面
5.1)放大和缩小图片
PhotoView
地址:https://github.com/chrisbanes/PhotoView
6)用户中心页面
6.1)拉下头部放大效果样式
PullZoomView
地址:https://github.com/Frank-Zhu/PullZoomView
(控件就这么多了,如果你们发现了我还没有说到的控件,或者你们在app中没有找到的话,就给我留言,我看看能不能给你们源码)
2、技术功能
2.1)本地内容缓存,主要使用ObjectInputStream将信息写入到SD中做保存,在没有网络的时候,进行加载
2.2)在分享页面的二维码分享,有一个二维码产生功能,那个其实网上有生成二维码的demo,将一个字符串生成二维码,主要是在二维码中间加上我们自己的logo,但是以为有什么高神的技术,结果其实很简单的,就是直接用ps将logo和二维码图片合成就OK了,原因很简单,二维码的识别错误容忍率在50%左右,所以只要你的logo图片不要太大就好啦
3、用到的第三方SDK
3.1)分享SDK,这个网上有很多的demo的,没有难度啦
3.2)使用友盟SDK进行数据统计
技术就讲到这里了,如果大家发现有什么地方有困惑的话,可以联系我啦,我会解答一下。

五、遇到的问题

下面来说一下我在开发过程中遇到的问题
1、服务端的问题就是在使用SpringMVC的时候,返回JSON处理
2、客户端这边遇到的问题就是多张图片的上传功能
3、运维遇到的问题就是怎么在远端服务器部署项目
4、设计上的问题就是如何改变一个icon的背景色
5、发布包的问题就是准备资源的时候各大市场的需求不一样
发包流程总结
国内的话,我就发布了以下市场:
1、360手机助手
2、应用宝
3、百度手机助手
4、安卓市场/91市场
5、安智市场
发包的过程中需要准备的就是前提资源:
1、身份证明:一般是身份证照片,手持身份证照片
2、应用的详细描述文案
3、应用的logo图片(一般是512*512的)
4、应用的截图(一般不能超过5张)
5、各个渠道的apk包(因为要统计各个渠道的安装情况和日后各个渠道的用户数据,所以要打不同的渠道包)
国 际的话,一般是发布GooglePlayStore了,但是我们一般不发国际,因为你都上不了GP网站,除非翻墙啦,因为我是想尝试所有的发包流程,所以 就体验了一下,在GP上发布apk的话,是需要money的,是29$,还好,当然需要用VISA的信用卡支付的,所以你还得去申请一个信用卡。GP上统 计数据一般用GA的SDK,广告的话一般是Admob/Inmobi等。

六、总结

经 历了六个月的时间,终于做出来属于自己的一个app,心里还是很开心的,但是这个过程真的很辛苦,从Server端写接口,到Client端调通数据,还 有后面的搭建服务器,部署项目,最后的发包,真的说不出来的那种体验,或许大家真的该体验一下,特别是在这个过程中,有无数次的想放弃,但是最终都坚持下 来了,这种磨练真的是一种成长,说个简单的例子:
开通GP账户我用了半个月的时间,去办信用卡,然后申请账号,被拒绝,在申请,这个过程,很伤的
发包过程,每个市场发包流程不一样,审核制度也不一样,来回打回几次,在提交,这个过程,挫败感真的很让你伤心的
我有时候连续好几个礼拜都是不开心的度过,特别是那种挫败感让你想放弃。
但是我还是想说,只要有目标,一定要坚持下来,所以如果你想开发一个app的话,真的给你的建议就是,要做好百分百的准备,不然你真的招架不住的。
最后再说一句,如果你们在使用的过程中发现有bug或者是建议,希望能够给我提,或者是在使用的过程中遇到不解的地方也希望能够联系我,我将给与解答。
最后谢谢大家的支持,能够下一个app看看~~

支持我的话就扫一扫啦:
PS: App内部有我的联系方式,如果想联系我的话,可以私聊我啦

更多内容:点击这里

关注微信公众号,最新Android技术实时推送

Android工作两年之后的第一个App--天真无谐的更多相关文章

  1. 关于Eclipse如何加入Gradle文件与Android Studio两个平台一起开发,工作目录不发生变化

    前言: 本来很久之前想弄这玩意,不过因为各种原因,所以没弄. 今天有位前辈提出需求.说想让Eclipse的Android项目逐步走向Android Studio,但是又担心Android Studio ...

  2. Android 实现两个list分别出现(在某一时刻只出现一个控件)

    第一种方法: 在.xml文件中将这两个List分别放入不同的布局管理器中,比如说 <RelativeLayout android:layout_width="match_parent& ...

  3. Android开发自学笔记(Android Studio1.3.1)—2.开始第一个Android应用

    一.前言      使用Android Studio开发Android应用是一件非常简单的事情,因为它会帮你自动完成很多工作.本篇我们主要完成一个单击按钮在文本框显示当前时间的简单应用,借此来演示一下 ...

  4. android面试题 不仅仅是面试是一个很好的学习

    下面的问题是在网上找到的总结,感谢您分享!希望,我们的共同进步,找到自己心仪的公司,: 1.android dvm 流程和Linux这个过程.无论是应用程序对同一概念: 答案:dvm是dalivk虚拟 ...

  5. Android:日常学习笔记(2)——分析第一个Android应用程序

    Android:日常学习笔记(2)——分析第一个Android应用程序 Android项目结构 整体目录结构分析 说明: 除了APP目录外,其他目录都是自动生成的.APP目录的下的内容才是我们的工作重 ...

  6. Android 数据库框架总结,总有一个适合你!

    一:OrmLite 简述: 优点: 1.轻量级:2.使用简单,易上手:3.封装完善:4.文档全面.缺点:1.基于反射,效率较低(本人还没有觉得效率低):2.缺少中文翻译文档 jar包 地址:http: ...

  7. Android(4)—Mono For Android 第一个App应用程序

    0.前言 年前就计划着写这篇博客,总结一下自己做的第一个App,却一直被新项目所累,今天抽空把它写完,记录并回顾一下相关知识点,也为刚学习Mono的同学提供佐证->C#也是开发Android的! ...

  8. Android Studio 1.0.2项目实战——从一个APP的开发过程认识Android Studio

    Android Studio 1.0.1刚刚发布不久,谷歌紧接着发布了Android Studio 1.0.2版本,和1.0.0一样,是一个Bug修复版本.在上一篇Android Studio 1.0 ...

  9. android实现两个activity数据交互

    android如何实现两个Activity数据交互?主要是根据Intent的携带功能,intent可以携带很多信息,比如Bundle,URI甚至对象(此时要序列化,并且对象里面的成员变量如果是对象,也 ...

随机推荐

  1. ES6中set的用法回顾

    ES6中的set类似一个数组,但是其中的值都是唯一的,Set本身是一个构造函数,用来生成 Set 数据结构. set函数可以接受一个数组作为参数,用来初始化: const set = new Set( ...

  2. Vagrant 手册之 Provisioning - file 配置程序

    原文地址 Provisioner 命令:"file" 通过 file 配置程序可以上传宿主机的文件或目录到虚拟机中. 使用场景:将宿主机的 ~/.gitconfig 复制到虚拟机中 ...

  3. [LeetCode] 461. Hamming Distance(位操作)

    传送门 Description The Hamming distance between two integers is the number of positions at which the co ...

  4. 10 (H5*) js第10天 正则表达式、深浅拷贝

    目录: 1:浅拷贝 2:  深拷贝 3:遍历DOM树 4:正则表达式 5:正则表达式的创建方式 6:字符串中的正则表达式 7:真数组和伪数组 8:  escape()和unescapt() 编码和 解 ...

  5. 如何写出没有 bug 的代码?

    来源:www.cnblogs.com/sherrywasp/p/9262877.html 1947年9月9日,美国海军准将 Grace Hopper 在哈佛学院计算机实验室里使用 Mark II 和 ...

  6. python开发之路-day03

    一 文件操作一 介绍 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所 ...

  7. GitHub 风格的 Markdown 语法

    GitHub 风格的 Markdown 语法 [译] GitHub 风格的 Markdown 语法 Original: GitHub Flavored Markdown - GitHub Help T ...

  8. 认识Mybatis

    什么是Mybatis? MyBatis 是一款优秀的基于Java的持久层框架(来源于“internet”和“abatis”的组合),它支持定制化 SQL.存储过程以及高级映射. MyBatis 避免了 ...

  9. gelera集群详解

    [MySQL]galera集群原理简介   特性 基于行复制的完全并行同步复制实时多主架构,任意节点可读写无延迟复制,事务零丢失,可靠健壮的读写体验.自动化节点关系控制:节点故障自动摘除,节点加入自动 ...

  10. UVa1636 Headshot 【迁移自洛谷博客】

    说明:小蒟蒻hkk现在正在做一些概率的题目,由于这方面和数学还有点关系,所以需要一些数学的思维,也需要表述出来,如夏军所述"把自己给讲懂",所以写了些blog,主要为帮助自己理解. ...