一个app从设想到上线运营的完整过程

一个app从设想到上线运营的完整过程

  • 前言
  • 设计
  • 开发
    • 准备工作
    • 后端开发
    • 前端开发
    • 管理系统
    • 数据采集
  • 部署打包
  • 发布到应用商店

前言

我是一个java程序员,同时喜欢古诗词,经常会写些古诗,安装体验了一些相关app,不太满意,于是就萌生了自己开发一个的想法。到现在我自己独立开发的一款app,已经在各应用商店上线了(名字叫诗词宝典),中间遇到很多坎,这里分享并记录一下过程,希望可以给想开发app的同志一些参考。总结一下大概步骤就是 设计->开发->部署打包->发布到应用商店

设计

设计阶段主要做的就是列举app的功能,规划出app的大致模样。
我当初设想的比如登录注册,浏览古诗词,写诗,看别人写到诗等。功能列举出来,然后就是画原型页面,使用了几款原型工具,国内的基本都要收费(破解不了),我用的是axure,他可以直接打包成一个静态网站,做交互很方便,可以下载组件库,画出来的效果很好。大概用了一周时间,原型就画好了,接下来就是开发了。

开发

准备工作

上线app需要准备很多,我是磕磕绊绊搞了很久,现在总结一下

  • 云服务器,我选用的是阿里云,需要实名认证过。我买的1核2g,我用的centos系统,一年两三百块钱
  • 备案域名,在阿里云租服务器后,然后同样在阿里云购买域名,域名比较便宜,一年几十块钱。买好之后进行备案,第一次备案比较麻烦,需要提交一个单子,然后会收到一块蓝布,手持身份证拍照在提交过去,一段时间后会收到一条验证码,再去网站验证一下就可以用了。
  • 对象存储,租来的服务器磁盘只有40g,所有我选择把文件和接口服务分开来,一开始用的七牛,个人开发者认证后会有50g免费额度,超出费用也很低,后来又加了腾讯云的对象存储cos,cos有客户端,手机也可以上传文件,很方便。而且价格更低。这个的成本可以忽略,总共也没花几块钱。
  • 短信,因为登录需要使用验证码,我使用的是腾讯云短信,每个月有100条的免费额度,超出后大概4分钱一条,开通后申请好模版和签名。
  • 邮箱,同样登录需要,使用的网易邮箱,然后开通smtp服务。
  • 应用商店账号,安卓的主要小米,华为,应用宝,百度,阿里分发都开通一下。iso的需要开发者账号,每年99美元,因为我负担不起所有没有上线。
  • 百度ai ,因为诗词宝典有一个文字转语音的功能,用的百度的,注册账号并认证。
  • 软著,百度搜一下,有很多广告,随便找一个买就行,费用在200左右,需要30个工作日。加钱可以缩短时间,不急的话甚至可以自己去申请。

开发是耗时最长的,主要就是数据库,后端,前端,第三方服务对接,管理系统等。

后端开发

因为我是java,所有后台直接用springboot+mybaits+mysql,考虑到开始没有多少用户量,为减少开发成本,未使用缓存技术。先根据原型设计出数据库的表结构,后台使用springboot注解开发,具体使用:

  • jjwt 用来生成token,
  • fastjson 阿里的json转换工具
  • lombok 实体类免写get和set工具
  • mybatis-plus 插件等
    具体pom文件依赖如下
<!-- 百度语音-->
        <dependency>
            <groupId>com.baidu.aip</groupId>
            <artifactId>java-sdk</artifactId>
            <version>4.12.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-simple</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--jjwt-->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.1</version>
        </dependency>
        <!--fastjson-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.56</version>
        </dependency>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.6</version>
        </dependency>
       
        <!--七牛-->
        <dependency>
            <groupId>com.qiniu</groupId>
            <artifactId>qiniu-java-sdk</artifactId>
            <version>7.2.22</version>
        </dependency>
        <!--邮件-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <!--阿里-->
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.1.0</version>
        </dependency>
        <!--腾讯-->
        <dependency>
            <groupId>com.github.qcloudsms</groupId>
            <artifactId>qcloudsms</artifactId>
            <version>1.0.6</version>
        </dependency>

        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--统一mapper-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.4</version>
        </dependency>
         <!--web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.13</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

后面就是写接口了,接口开发和调试大概用了两周时间,在调试第三方api的时候耗时比较多。

前端开发

前端开发经历几个不同阶段,所采用的模式包括html加壳打包;安卓原生开发;flutter 跨平台开发;

  • 第一版我使用的html+jquery的方式写的页面,使用hbuilder 开发工具配置打包就行了,虽然很丑,但基本功能有了,且用户体验很差。

  • 第二版我使用了vue+vantui 来编写前端页面,使用安卓webview加载本地文件然后打包,因为使用了ui框架,样式上好看一些,但是复杂页面比较卡顿,在此期间学习了一些vue和安卓的相关东西。

  • 第三版,我直接抛弃加壳方式,直接使用安卓原生开发,但是画页面的难度比html繁琐数倍,而且难看,最终没有发布该版本;

  • 第四版,因为flutter问世,我了解一下,组件齐全,拿来即用,而且是跨平台的,于是采用了flutter进行开发,加上学习不过一个月的时间就上线了。目前这是最好的方案了,成品我十分满意。

前端开发主要是画页面,对接口,比较耗时间,然后联调一些bug并解决掉。

  • logo和启动图;我是自学了一些ps,设计了一个logo和启动图,和几张轮播图。可以找专业的ui进行设计,费用不低(贫穷使我啥都要会一点)

管理系统

管理系统必不可少,不可能要加点数据就去直接操作数据库,很麻烦。
我使用vue+element ui来做,组件话使得管理系统开发得很快,有两个图表统计集成了echarts,管理系统就不细说,很简单。

数据采集

前后端开发完成之后,就需要往数据库里添数据了,因为古诗词都是公共版权,我随便找几个比较规范的网站抓取数据,抓取数据使用jsoup,一个java爬虫工具,稍微懂html结构都会用,抓取下来的数据清洗完批量操作到表里就行。

部署打包

到这一步,诗词宝典已经能在局域网内运行了,如何部署到外网呢?

  • 部署服务器,登录从阿里云租来的主机,安装docker ,nginx,mysql,并配置。使用docker跑一个tomcat镜像,将后台数据库改成线上环境,打一个war包,上传到webapps目录下,用到上传工具fileZilli。nginx配置一些域名跳转,端口映射就行。
  • apk打包;不管是用安卓加壳还是flutter,都会build生成一个apk包,然后使用jdk的工具生成一个签名文件,一定要妥善保管key文件和他的密码。然后对apk包进行签名,如果要发布到应用宝,需要先去平台加固,然后再签名;
  • ios 打包,需要使用mac电脑安装xcode,购买开发者账号才行。
    弄完之后,安装包就是可以用的了。

发布到应用商店

不管是哪个平台的应用商店,都需要实名认证,上传安装包,填一下资料比如app截图,功能说明等。然后等待审核就行了,审核通过之后就会在应用商店里搜索到了。
各个应用商店开发平台地址:

  • 小米:https://dev.mi.com/console/
  • 华为:https://id1.cloud.huawei.com/CAS/portal/loginAuth.html
  • 阿里:http://open.uc.cn/login
  • 百度:https://app.baidu.com/
  • 应用宝:https://wiki.open.qq.com/wiki/%E9%A6%96%E9%A1%B5
    (oppo和vivo不接收个人开发者)

其他用到的网站:
阿里云:https://account.aliyun.com/login/login.htm
腾讯云:https://cloud.tencent.com/
七牛:https://sso.qiniu.com/
网易邮箱:https://mail.163.com/
element UI: https://element.eleme.cn/#/zh-CN
flutter中文网:https://www.dartcn.com/guides/get-started
还有很多就不一一列举了。

你可能感兴趣的:(经验总结)