移动端开发注意的事宜

1.什么是移动端开发?以及开发的工具?有哪些方式?

移动开发也称为手机开发,或叫做移动互联网开发。是指以手机、PDA、UMPC等便携终端为基础,进行相应的开发工作,由于这些随身设备基本都采用无线上网的方式,因此,业内也称作为无线开发。

移动应用开发是为小型、无线计算设备编写软件的流程和程序的集合,像智能手机或者平板电脑。移动应用开发类似于Web应用开发,起源于更为传统的软件开发。但关键的不同在于移动应用通常利用一个具体移动设备提供的独特性能编写软件。例如,利用iPhone的加速器编写游戏应用。

开篇之前我们先简略的讲一下移动手机的发展历史。
一. 1902年,一个叫做“内森·斯塔布菲尔德”的美国人在肯塔基州默里的乡下住宅内制成了第一个无线电话装置,这部可无线移动通讯的电话就是人类对“手机”技术最早的探索研究。
在这里插入图片描述
对手机最早的探索者——内森·斯塔布菲尔德

二 1938年,美国贝尔实验室为美国军方制成了世界上第一部“移动电话”手机。
在这里插入图片描述
三.1983年,世界上第一台移动电话终于问世——摩托罗拉DynaTAC8000X(大哥大),是世界上首部获得美国联邦通讯委员会(FCC)认可并正式投入商用的蜂窝式移动电话。这部手机在1983年首次将贝尔实验室1947年提出的移动电话概念和70年代提出的蜂窝组网技术概念变为了现实。这个移动通讯业界的第一奠定了摩托罗拉手机部门在移动通讯业界20余年不可动摇的地位。
在这里插入图片描述
世界上第一台移动电话

四 . 1999年,第一部智能手机 摩托罗拉天拓A6188
在这里插入图片描述
这款A6188采用了摩托罗拉公司自主研发的龙珠(Dragon ball EZ)16MHzCPU,支持WAP1.1无线上网,采用了PPSM(Personal Portable Systems Manager)操作系统。A6188一经推出,便成为了高端商务人士的首选,至今我们还能偶尔看到这款开辟一个时代的传奇手机。同时,这款手机也是全球第一部具有触摸屏的手机,它同时也是第一部中文手写识别输入的手机。

五 2007年,iphone出世,触屏+应用引爆智能机新时代。
在这里插入图片描述
六 . 2008年,首部Android手机,由HTC制造,型号为HTC G1。

在这里插入图片描述
一 移动平台主流都是哪些 ?

iOS

iOS是由苹果公司为iPhone、iPod touch以及iPad开发的闭源操作系统。就像其基于的Mac OS X操作系统一样,它也是以Darwin为基础的。原本这个系统名为iPhone OS,直到2010年6月7日WWDC大会上宣布改名为iOS。iOS的系统结构分为四个层次:核心操作系统(the Core OS layer),核心服务层(the Core Services layer),媒体层(the Media layer),Cocoa 触摸框架层(the Cocoa Touch layer)。

在这里插入图片描述
支持生产商:苹果。
开发语言:objective-c,swift
主要开发工具:Xcode
设计规范: Human Interface Guidelines
中文翻译
开发方向:逆向开发,App应用开发

安卓

Android是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统,该平台由操作系统、中间件、用户界面和应用软件组成 [18] 。

Android一词的本义指“机器人”。同时也Android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。
在这里插入图片描述
Android在正式发行之前,最开始拥有两个内部测试版本,并且以著名的机器人名称来对其进行命名。
它们分别是:阿童木(AndroidBeta),发条机器人(Android 1.0)。
后来由于涉及到版权问题,谷歌将其命名规则变更为用甜点作为它们系统版本的代号的命名方法。甜点命名法开始于Android 1.5发布的时候。
作为每个版本代表的甜点的尺寸越变越大,然后按照26个字母数序:纸杯蛋糕(Android 1.5),甜甜圈(Android 1.6),松饼(Android 2.0/2.1),冻酸奶(Android 2.2),姜饼(Android 2.3),蜂巢(Android 3.0、Android 3.1和Android 3.2),冰激凌三明治(Android 4.0),果冻豆(Jelly Bean,Android4.1、Android 4.2和Android 4.3,以及棒棒糖(Android5.0)。用户可通过ROOT获得更好的体验。
代表支持生产商:三星、小米、华为、魅族、中兴、摩托罗拉、HTC、LG、索尼,360。

开发语言:java,kotlin
主要开发工具:Android Studio
设计语言: MaterialsDesign
开发方向:底层驱动开发,嵌入式开发,App应用开发

二 移动开发有哪些方式 ?
1 Native App: 本地应用程序(原生App)
2 Web App:网页应用程序(移动web)
3 Hybrid App:混合应用程序(混合App)

在这里插入图片描述
1.Native APP

Native APP 指的是原生程序,一般依托于操作系统,有很强的交互,是一个完整的App,可拓展性强,需要用户下载安装使用。(简单来说,原生应用是特别为某种操作系统开发的,比如iOS、Android、黑莓等等,它们是在各自的移动设备上运行的)

该模式通常是由“云服务器数据+APP应用客户端”两部份构成,APP应用所有的UI元素、数据内容、逻辑框架均安装在手机终端上。

原生应用程序是某一个移动平台(比如iOS或安卓)所特有的,使用相应平台支持的开发工具和语言(比如iOS平台支持Xcode和Objective-C,安卓平台支持Android studio和Java)。原生应用程序看起来(外观)和运行起来(性能)是最佳的。
优点:

能够与移动硬件设备的底层功能,比如个人信息,摄像头以及重力加速器等等。

可访问手机所有功能(GPS、摄像头)。

速度更快、性能高、整体用户体验不错。

支持大量图形和动画

比移动Web App运行快

应用审核流程会保证让用户得到高质量以及安全的App

官方会发布很多开发工具或者人工支持来帮助你的开发

页面存放于本地
缺点:

开发成本高,尤其是当需要多种移动设备来测试时

因为是不同的开发语言,所以开发,维护成本也高

因为用户使用的App版本不同,所以你维护起来很困难

不夸平台

审核流程复杂且慢,会严重影响你的发布进程

上线时间不确定(App Store审核过程不一)

内容限制(App Store限制)

获得新版本时需重新下载应用更新(提示用户下载更新,用户体验差)

2.Web APP

Web App 指采用Html5语言写出的App,不需要下载安装。类似于现在所说的轻应用。生存在浏览器中的应用,基本上可以说是触屏版的网页应用。(Web应用本质上是为移动浏览器设计的基于Web的应用,它们是用普通Web开发语言开发的,可以在各种智能手机浏览器上运行)

Web App开发即是一种框架型APP开发模式(HTML5 APP 框架开发模式),该开发具有跨平台的优势,该模式通常由“HTML5云网站+APP应用客户端”两部份构成,APP应用客户端只需安装应用的框架部份,而应用的数据则是每次打开APP的时候,去云端取数据呈现给手机用户。

HTML5应用程序使用标准的Web技术,通常是HTML5、JavaScript和CSS。这种只编写一次、可到处运行的移动开发方法构建的跨平台移动应用程序可以在多个设备上运行。虽然开发人员单单使用HTML5和JavaScript就能构建功能复杂的应用程序,但仍然存在一些重大的局限性,具体包括会话管理、安全离线存储以及访问原生设备功能(摄像头、日历和地理位置等)。

优点:

支持设备广泛

较低的开发成本

可即时上线

无内容限制

任何时候都可以发布App,不需要官方的审核

纯H5 APP快速开发、低成本、多平台

用户可以直接使用最新版本(自动更新,不需用户手动更新)

跨平台开发

页面存放于web服务器(受限于UIwebview)(减少了内存,但是会增加服务器的压力)
缺点:

只能使用有限的移动硬件设备功能,无法使用很多移动硬件设备的独特功能

要同时支持多种移动设备的浏览器让开发维护的成本也不低(也要适配不同的浏览器),如果用户使用更多的新型浏览器,那问题就更不好处理了

对于用户来说,这种App很难被用户发现

这里的数据获取都是在资源页面上异步完成的,因为只有这样才能让这些资源页面完成预加载或者渲染。(异步的话都涉及到耗时的问题)

表现差(对联网的要求比较大)

用户体验没那么炫

图片和动画支持性不高

访问手机硬件功能比较费力

3.Hybrid APP

Hybrid APP指的是半原生半Web的混合类App。需要下载安装,看上去类似Native App,但只有很少的UI Web View,访问的内容是 Web 。

混合应用程序让开发人员可以把HTML5应用程序嵌入到一个细薄的原生容器里面,集原生应用程序和HTML5应用程序的优点(及缺点)于一体。

混合应用大家都知道是原生应用和Web应用的结合体,采用了原生应用的一部分、Web应用的一部分,所以必须在部分在设备上运行、部分在Web上运行。不过混合应用中比例很自由,比如Web 占90%,原生占10%;或者各占50%。

有些应用最开始就是包了个原生客户端的壳,其实里面是HTML5的网页,后来才推出真正的原生应用。比较知名的APP,比如手机百度和淘宝客户端 Android版,走的也是Hybrid App的路线,不过手机百度里面封装的不是WebView,而是自己的浏览内核,所以体验上更像客户端,更高效。

(1)第一种方案:Web架构为重

优点:

全Web开发,一定程度上有利于Web前端技术人员快速地构建页面样式

有利于在不同的平台上面展示同一个交互层

便于调试,开发的时候可以通过浏览器的

方式进行调试,工具丰富。

兼容多平台

顺利访问手机的多种功能

App Store中可下载(Wen应用套用原生应用的外壳)

可线下使用

页面存放于本地和服务器两种方式,部署应用程序(受限于UIwebview)
缺点:

不确定上线时间

虽然说你可以专注在界面以及交互开发上了,但是这页会成为一个缺点,比如说要仿造一个iOS的默认设置界面,就需要大量的html以及css代码了,而且效果不一定和iPhone上面的界面一样好
用户体验不如本地应用

性能稍慢(需要连接网络)

技术还不是很成熟(比如Facebook现在的应用属于混合应用它可以在许多App Store畅通无阻,但是掺杂了大量Web特性,所以它运行速度比较慢,而现在为了提高性能FB又决定采用原生应用)

(2)第二种方案:编译转换方式

优点:

利用自己熟悉的语言进行应用开发。
缺点:

严重依赖于其工具厂商提供的工具包,调试的时候就要有全套的工具。

怎样选择开发模式(视情况而定)

近年来随着移动设备类型的变多,操作系统的变多,用户需求的增加,对于每个项目启动前,大家都会考虑到的成本,团队成员,技术成熟度,时间,项目需求等一堆的因素。

因此,开发App的方案已经变得越来越多了。无数的人参与或者看到过一个讨论:原生开发还是混合开发,又或者是Web开发?要结实践和自身的情况。

1.比如,你的预算是多少?预算充足的话可以开发几个本地应用加一个Web应用

2.你的应用需要什么时候面市?Web应用可以很快地开发然后直接推出来

3.你的应用需要包含什么特点和功能?如果跟手机的某些功能深度整合了,比如摄像头,需要呈现大量图形和动画就选原生

应用好点

4.你的应用是否一定需要网络

5.你的应用的目标硬件设备是所有的移动设备还是仅仅只是一部分而已

6.你自己已经熟悉的开发语言,或者说现有资源

7.这个应用对于性能要求是否苛刻

等等。。。。要根据自己的业务需求,来选择合适的开发模式,一个应用中,不仅仅是单独的一种开发方式,也有可能是多种开发方式的组合

三 具体如何进行移动开发 ?

接下来我会针对于Android,与iOS两个平台,分别讲一下基本的开发打包流程,以及与后端交互流程,先来一张整体交互流程图如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.1 后台搭建
开发语言:python
开发工具:pycharm
数据库:mongoDB
web框架:flask

整体环境就是使用了这些东西,具体如何安装mongodb ,安装python环境,新建flask项目,这些网上有很多资料,具体我就不再赘述了,我们主要讲整体通信的流程,使用它就是给我们提供一些简单的接口,然我们了解整个前后端交互过程,当新建了一个flask项目后,我写了增删查改,四个接口,我们app也主要对接这四个接口。代码如下:

#coding=utf-8
#mongo.py
from flask import Flask,abort
from flask import jsonify
from flask import request


app = Flask(__name__)

import pymongo

client = pymongo.MongoClient(host='localhost', port=27017)
db = client.local

@app.route('/findUser', methods=['GET'])
def get_all_users():
  user_info = db.test.find()
  users = []
  for user in user_info:
      userInfo = {"uId": user['_id'], "sex": user['sex'], "aName": user['aName'], "age": user['age'], "address": user['address'], "phone": user['phone']}
      users.append(userInfo)

  return jsonify({'result': users})

@app.route('/addUser', methods=['POST'])
def add_user():
  _id = request.form['uId']
  sex = request.form['sex']
  aName = request.form['aName']
  age = request.form['age']
  address = request.form['address']
  phone = request.form['phone']


  user_id = db.test.insert({'_id': _id, 'sex': sex, 'aName': aName, 'age': age, 'address': address, 'phone': phone})
  return jsonify({'result': user_id})

@app.route('/modifyUser/<string:uId>', methods=['PUT'])
def update_user(uId):
    aName = request.form['aName']
    phone = request.form['phone']
    output = db.test.update({"_id": uId}, {'$set': {"aName": aName, "phone": phone}})
    return jsonify({'result': output['ok']})

@app.route('/deleteUser/<string:uId>', methods=['DELETE'])
def delete_user(uId):
    userInfo = db.test.find({"_id": uId})
    for user in userInfo:
        db.test.remove(user)

    return jsonify({'result': True})

if __name__ == '__main__':
    # app.run(host = '0.0.0.0', port = 80, debug = True)
    app.run()

在这里插入图片描述
点击运行,我们的后台服务就起来了,访问地址是:http://127.0.0.1:5000/ ,到此我们后端服务就搭建起来了,下面再看一下我们的数据库设计,我安装了一个mongodb的桌面工具:Robot 3t,我在local数据库下,建了一个test表,主要建了一个用户信息的表,截图如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接下来我们开始写App,我们先写Android.
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值