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

前言

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

设计

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

开发

准备工作

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

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

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

后端开发

后台用springboot+mybaits+mysql进行架构,考虑到开始没有多少用户量,为减少开发成本,未使用缓存技术。先根据原型设计出数据库的表结构,自动生成一些代码,然后编写业务代码,用到的插件主要有

  • 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
还有很多就不一一列举了。

  • 16
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
图+文字,详细到小白都可以直接照搬。 目录如下: 一、 申请app id 1. 登录苹果开者中心 2. 进入证书中心 3. 新增appid 4. 填写app ID Name 5. Bundle Identifier (App ID Suffix) 6. 选择服务 二、 生成Provisioning Profiles 1. 生成development Provisioning Profiles,用于真机调试 1.1. 新增Provisioning Profiles 1.2. 选择Provisioning Profiles类型 1.3. 选择相关的app id 1.4. 选择开发者证书 1.5. 选择设备 1.6. 下载安装 2. 生成distribution Provisioning Profiles,用于发布 2.1. 新增Provisioning Profiles 2.2. 选择Provisioning Profiles类型 2.3. 选择app id 2.4. 选择发布证书 2.5. 填写名称,下载安装 三、 在itunes connect添加app 1. 新增app 2. 填写的海报信息 3. 填写产品描述 4. 填写审核信息 5. 填写价格信息 6. 可选价格区间 四、 构建版本 1. 在mac mini上打开程序源码 2. 插上设备,进行真机调试编译 3. 上线环境配置一:boundle id配置,版本,build版本,开发者账号 4. 上线环境配置二:64位架构编译配置 5. 上线环境配置三:发布证书选择 6. 上线环境配置四:兼容最低版本选择 7. 上线环境配置五:运行设备类型选择 8. 上线环境配置六:发布配置 9. 上线环境配置七:包名设置 10. 上线环境配置八:构建名称设置 11. 上线环境配置九:加密确认 12. 构建 13. 导出ipa 14. 确认构建项 15. 上传构建版本 16. 在app store选择构建版本 17. 在itunes connect保存信息,检查填写,提交审核

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值