手机软件开发_手机开发软件 - CSDN
精华内容
参与话题
  • 当今互联网时代,手机app软件开发已经成为时代的潮流,企业想开发自己的专属手机软件APP,却不知道怎么去和手机软件开发公司谈合作,更不知道一款手机APP开发需要经历哪些流程,因此,达不到各取所需的成效。...

    当今互联网时代,手机app软件开发已经成为时代的潮流,企业想开发自己的专属手机软件APP,却不知道怎么去和手机软件开发公司谈合作,更不知道一款手机APP开发需要经历哪些流程,因此,达不到各取所需的成效。下面软件开发平台米鼠网小编为大家进行简述下开发APP的所需流程。

    1.需求调研

    在这里插入图片描述

    首先客户需要了解自己想发开的手机软件的功能需求,比如您这个手机软件是属于什么类型的,具有哪些功能,目标用户群体是哪些,能给用户带来什么,并且盈利点在哪,在需求调研中,手机软件开发公司会安排产品经理与客户直接面向终端用户,对业务需求进行深入挖掘。确保产品的功能能真正贴切用户需求,让产品实现它的价值。

    2.产品设计

    需求调研完毕后,由产品经理根据产品调研结果,对产品进行初步的规划,列出功能表,设计初步的原型草图和结构图。

    3.需求落地

    根据对产品的初步规划,多次商定,最后由产品经理与客户,技术经理,界面交互设计师,对产品需求的落地敲定,从用户的角度,确保产品符合客户业务上面的需求。

    4.界面交互设计、技术设计

    需求敲定后,手机软件开发公司界面交互团队和技术团队同时进行交流设计。

    5.评审

    手机软件开发公司的开发团队对技术设计以及文档的评审,根据需求评估开发时间。同时,由客户与产品经理与及设计师,对产品的界面以及交互设计进行评审/确认。

    6.项目开发

    手机软件开发公司的项目负责人对项目进行立项,分组安排手机软件定制开发。

    7.测试调BUG

    在这里插入图片描述

    定制开发的手机软件测试版本出来后,对照敲定的功能需求,进行全面测试,发现BUG,立即修改,反复测试。

    8.上线

    客户对开发的手机软件验收完毕后,协助客户将手机软件发布到各大电子软件市场。

    9.调优

    手机软件产品经过市场验证后,对初始版本进行需求变更,代码优化。

    10.版本更新

    调优确定后,把调优后的手机软件版本更新到各大电子软件市场。

    终上,手机软件合作开发的流程并没有我们想象中的复杂,而在米鼠网上如果想开发一个APP只需要提供您的具体需求,也会有专业的项目经理帮您做梳理米鼠网是一个在线软件交易平台,作为专业的软件定制开发平台,平台注册软件研发工程师100W+,可以根据客户的要求来定制任意软件,凭借丰富的软件开发经验和优秀的设计能力,更有独特的保证金体系来防止工期的拖延以及软件产品质量问题,如果您有软件开发需求,欢迎咨询。

    在这里插入图片描述

    展开全文
  • Android手机软件开发 课程 教学 大纲

    千次阅读 2011-11-03 17:45:46
    《专业考证培训及考证》课程教学大纲 ...它面向软件设计与开发、软件技术支持以及软件测试三个岗位,主要讲解《Java程序设计》、《Android手机软件开发》等课程,在《Android软件开发》技术的基础上再

    《专业考证培训及考证》课程教学大纲

    课程编号:024015    授课学时: 80       学分数: 4    适用专业:通信技术

    一、课程的性质和任务

    课程的性质:

    《专业考证培训及考证》课程是通信技术专业的专业必修课。它面向软件设计与开发、软件技术支持以及软件测试三个岗位,主要讲解《Java程序设计》、《Android手机软件开发》等课程,在《Android软件开发》技术的基础上再加以提升,从而使学生能够更好地适应就业岗位。

    课程的任务:

    课程的内容主要包括理论部分和实践部分,理论讲解移动开发基本概念、Java程序设计、Android软件开发等内容。其中理论部分主要包括Java程序设计基础、资源访问、用户界面、组件使用、数据存储、多媒体程序设计、图形处理、互联网应用、GPS定位服务等。实践部分又包括两部分,一部分是针对前面基础理论设计的案例实践,进一步巩固理论知识,另外还包括企业的真实项目,通过引入企业真实项目以及企业兼职教师,提高学生的综合应用能力。

    二、学时分配

     

     

    序号

     
     

    教学内容

     
     

    学   时

     

     

     

    1

     
     

    第一章:移动应用平台简介

     
     

    2

     

     

     

    2

     
     

    第二章:Android系统基础

     
     

    2

     

     

     

    3

     
     

    第三章:开发环境

     
     

    4

     

     

     

    4

     
     

    第四章:程序设计基础

     
     

    20

     

     

     

    5

     
     

    第五章:用户界面开发

     
     

    2

     

     

     

    6

     
     

    第六章:数据存储

     
     

    2

     

     

     

    7

     
     

    第七章:网络与通信

     
     

    2

     

     

     

    8

     
     

    第八章:图形与多媒体

     
     

    2

     

     

     

    9

     
     

    第九章:特色开发

     
     

    2

     

     

     

    10

     
     

    第十章:高级话题

     
     

    2

     

     

     

    11

     
     

    第十一章:案例教学

     
     

    40

     

     

     

     

     
     

    合计

     
     

    80

     


    三、教学内容与要求

    教学内容

    第一章:移动应用平台简介

    学习目标:

    了解移动应用平台。

    具体掌握:

    了解移动平台简介,智能手机、PDA、平板电脑等区别联系

    理解移动平台特点

    掌握移动平台硬件架构,ARM,通信模块,GPS等

    掌握移动平台软件系统,Symbian, Windows Phone,iPhone对比

     

    第二章:Android系统基础

    学习目标:

    了解Android系统基础。

    具体掌握:

    了解基本概念、历史、开放手机联盟等

    理解Android系统构架,Linux,Dalvik VM, Library, Application Framework等

    理解应用程序框架,Application, Widgets等

    了解盈利模式,Market, AdMob等

     

    第三章:开发环境

    学习目标:

    了解Android开发环境,掌握开发环境的搭建。

    具体掌握:

    掌握开发环境搭建,SDK, Eclipse及ADT

    理解项目生成与构建,第一个程序,编译等

    掌握调试,模拟器,断点,单步跟踪等

    掌握程序部署,打包、签名等

     

    第四章:程序设计基础

    学习目标:

    掌握Java程序语言、Java程序设计、Android程序设计基础。

    具体掌握:

    理解项目目录结构,介绍一个完成的android构成

    掌握组件基础,Intent, Activity, Service等

    掌握组件调用,Intent解析

    掌握生命周期,Task Stack等

     

    第五章:用户界面开发

    学习目标:

    掌握用户界面开发。

    具体掌握:

    理解界面布局,各种Layout

    理解事件处理,如何响应事件

    理解常用控件,Button等各种控件

    理解资源解析,Xml格式等

     

    第六章:数据存储

    学习目标:

    掌握数据存储的常用方法。

    具体掌握:

    了解SQL Lite 

    理解Content Provider,如何使用及实现

    理解SharePreference     

    理解文件与网络

     

    第七章:网络与通信

    学习目标:

    掌握网络与通信的常用方法。

    具体掌握:

    理解Socket与HTTP  

    理解Wifi与蓝牙     

    掌握电话模块  

    掌握短消息及如何收发短信及拦截

     

    第八章:图形与多媒体

    学习目标:

    掌握图形与多媒体编程的常用方法。

    具体掌握:

    理解简单绘图,Canvas, 双缓冲, 图片旋转等

    理解动画实现,Frame等各种动画

    了解媒体编解码,多媒体播放

    理解OpenGL ES,3D编程

     

    第九章:特色开发

    学习目标:

    了解Google的特色开发。

    具体掌握:

    理解Google API,GoogleVoice, Map等

    了解Sensors,各种传感器,多点触摸

    理解定位技术GPS, AGPS

    了解Widget   

     

    第十章:高级话题

    学习目标:

    了解高级应用。

    具体掌握:

    理解NDK,用C/C++开发

    了解系统移植,如何porting android

    理解位置服务概览,介绍LBS

    理解,foursquare实现,介绍如何做一个非常流行的位置服务foursquare的android客户端

     

    第十章:案例教学

    学习目标:

    掌握BMI程序设计案例。

    具体掌握:

    用户界面开发

    对话框的应用

    综合应用

     

    教学要求:

    1. 使学生理解嵌入式系统和嵌入式软件的基本概念及特点;

    2. 以Android这一主流移动平台操作系统为切入点和教学案例,使学生掌握移动软件开发的基本特点、基本流程和基本方法;

    3. 使学生理解基于Android嵌入式操作系统的应用程序开发、部署、管理等嵌手机软件的高级开发技术;

    4. 通过课程项目和案例教学,提高学生在手机软件开发方面的动手能力和解决问题的能力,并鼓励创新。

    本课程完全取消笔试考试。

     

    展开全文
  • H5手机app开发

    2020-01-02 11:33:37
    手机 app 分类 表面上看,手机 App 都是同样的东西,就是手机上的应用程序,点击图标就能运行,但是它们...按照开发技术,App 可以分成三大类。 原生应用(native application,简称 native App) Web 应用(web ap...

    http://www.ruanyifeng.com/blog/2019/12/hybrid-app-concepts.html

    手机 app 分类

    表面上看,手机 App 都是同样的东西,就是手机上的应用程序,点击图标就能运行,但是它们的底层技术不一样。按照开发技术,App 可以分成三大类。

    1. 原生应用(native application,简称 native App)
    2. Web 应用(web application,简称 Web App)
    3. 混合应用(hybrid application,简称 hybrid App)
    原生应用

    原生 App 使用与手机操作系统相同的语言。iOS 的原生 App 使用 Objective-C 语言或 Swift 语言,安卓使用 Java 语言或 Kotlin 语言。由于跟底层系统的语言和技术模型一致,所以原生 App 的性能和用户体验都很好
    优点:

    1. 较好的性能和体验
    2. 可以使用系统的所有硬件和软件 API,比如 GPS、摄像头、麦克风、加速计、通知推送等等,能充分发挥系统的潜力

    缺点:

    1. 每个手机平台都要建立一个独立的开发团队,大公司一般都有 iOS 和安卓两个开发团队
    2. 原生 App 使用底层操作系统的语言,都是很重的编译型语言,开发和调试成本相对较高,时间周期长
    3. 原生 App 必须下载安装才能使用,只要升级版本,就必须重新下载安装。用户往往不愿意更新版本,厂商被迫不得不长期支持很久以前的旧版本
    Web 应用

    Web App 是使用网页做的应用程序,必须在浏览器中使用,主要使用网页技术,即 HTML、JavaScript 和 CSS。2008年,w3c 组织发布了 HTML 第5版,简称 HTML 5,该版本大大增强了网页的功能,使得网页可以当作应用程序使用,而不仅仅是展示文字和图片,这就是 Web App 的由来

    优点:

    1. 不需要下载安装和更新
    2. Web App 写起来比较快,调试容易,不需要应用商店的批准就能发布

    缺点:

    1. 浏览器提供的 API(即 Web API)很有限(目前只有相机、GPS、电池等少数几个),大部分系统硬件都不能通过网页访问,也无法直接读取硬盘文件,所以 Web App 无法充分利用平台的硬件
    2. 网页通过浏览器渲染,性能不如原生 App,不适合做性能要求较高的页面。
    PWA

    为了推广 Web App,谷歌公司的 Chrome 浏览器团队做了很多努力。他们认为,Web App 足以满足大多数 App 的需求,但是三大缺陷阻碍它的推广

    1. 不能从手机的首屏直接进入
    2. 缺乏手机状态栏和锁屏时的通知推送能力
    3. 不支持脱机访问(即断网也能使用)

    为了解决 Web App 的这些问题,Chrome 团队开发了新技术"渐进式 Web App"(Progressive Web App,缩写 PWA)。它可以把网站缓存在手机里面,供离线时使用,还能在手机首屏生成图标,直接点击进入,并且有通知推送能力,也不带有浏览器的地址栏和状态栏,跟原生 App 的使用体验非常接近。

    但是,PWA 需要浏览器访问一次网站,才能在首屏生成图标,并且目前 iOS 系统的支持还不够理想,所以还只是一项探索性质的技术,迄今为止缺乏足够的成功案例。

    混合应用

    混合 App (hybrid App)顾名思义就是原生 App 与 Web App 的结合。它的壳是原生 App,但是里面放的是网页。 可以理解成,混合 App 里面隐藏了一个浏览器,用户看到的实际上是这个隐藏浏览器渲染出来的网页

    混合 App 的原生外壳称为"容器",内部隐藏的浏览器,通常使用系统提供的网页渲染控件(即 WebView 控件),也可以自己内置一个浏览器内核。结构上,混合 App 从上到下分成三层:HTML5 网页层、网页引擎层(本质上是一个隔离的浏览器实例)、容器层。

    混合 App 里面的网页不同于普通网页,可以调用底层系统所有的 API。奥秘就在于外层容器提供了 API Bridge,充当底层 API 的中介,允许内部的网页调用底层。

    所谓 API Bridge 就是容器在底层接口和网页之间,建立一座桥梁,让双方通信。容器一旦接到网页的请求,就根据请求去调用底层系统的 API,然后再返回结果给网页。API Bridge 往往以 JavaScript 语言提供,方便网页调用,这时又称为 JSbridge

    不同容器的 API Bridge 是不一样的。为某个容器写的网页,不能放在另一个容器使用,也无法在浏览器使用,除非网页脚本做了兼容处理。

    容器提供的 API Bridge 必须跟着平台更新。比如,iOS 发了新版本,有了新的硬件 API,容器也必须跟着推出新版的 API Bridge。如果容器没有跟上,开发者为了使用新的硬件,就只能想办法自己来写缺失的 API Bridge。

    那么混合 App 同时具有原生 App 和 Web App的优点,又可以避免它们的一些缺点
    优点:

    1. Web 技术是跨平台的,开发者只写一次页面,就能支持多个平台。也就是说,混合 App 只需要一个团队就够了,开发成本较低。
    2. 混合 App 的灵活性大,很容易集成多种功能。一方面,混合 App 很容易加载外部的 H5 页面,实现 App 的插件结构;另一方面,Web 页面可以方便地调用外部的 Web 服务
    3. Web 页面的调试和构建,远比原生控件简单省时。页面的更新也容易,只要在服务器上发布新版本,触发容器内更新就可以了。另外,Web 开发人员也比较容易招聘,传统的前端程序员可以承担开发任务。

    缺点:

    1. 由于存在网页引擎的中间层,所以性能比较欠缺,不仅不如原生 App,而且由于 WebView 不是全功能浏览器,可能比 Web App 都要慢一些。
    2. 由于页面跨平台,就无法使用只有特定平台提供的功能,导致体验不如纯的原生 App。举例来说,早期的时候,安卓有物理的后退按钮,iPhone 没有,页面设计不得不考虑这一点(在页面上也设计一个后退按钮,但是安卓与系统的返回重复)

    H5

    H5 这个词,可以理解成就是混合 App 模型,只不过它特指混合 App 的前端部分。 因为混合 App 的前端就是 HTML5 网页,所以简称 H5。这个词是国内独有的,基本上都是前端程序员在用,国外不用这个词,就直接叫混合 App。

    所谓的 H5 页面,其实就是混合 App 的前端,外面是一个原生的壳,里面是 Web 网页

    小程序

    小程序,可以看作是针对特定容器的 H5 开发。微信本身是一个容器,开放自己的接口(JSbridge),外部开发者使用规定的语法,编写页面,容器可以动态加载这些页面。

    小程序对于微信官方的好处是,扩展了功能和应用场景,吸引外部开发者加入,繁荣了生态。对于外部开发者的好处是,有了流量入口,可以直接调用微信的各种功能(比如支付)。

    今天对于 H5 相关概念的介绍,就到这里为止,下一篇文章将介绍 H5 相关开发工具和框架。

    React Native

    2013年, Facebook 公司发布了 React 框架。这个框架是为网页开发设计的,核心思想是在网页之上,建立一个 UI 的抽象层,所有数据操作都在这个抽象层完成(即在内存里面完成),然后再渲染成网页的 DOM 结构,这样就提升了性能。

    很快,工程师们就意识到了,UI 抽象层本质上是一种数据结构,与底层设备无关,不仅可以渲染成网页,也可以渲染成手机的原生页面。这样的话,只要写一次 React 页面,就能分别编译成 iOS 和安卓的原生 App。这就是 React Native 项目的由来。

    React Native 虽然也使用 JavaScript 语言,并且写法看上去像 Web 页面,但其实所有控件都是自己定义的,编译时再一一翻译为对应的原生控件。举例来说,React Native 的文本渲染控件是,翻译成 iOS 控件为UIView,翻译成安卓控件为TextView。这种做即保证了性能,又做到了跨平台支持,所以一诞生就引起开发者的关注,成了热门技术

    React Native 的想法虽然很美好,但是实际开发中出现了各种各样的问题。最主要的一个问题是, UI 抽象层翻译出来的 iOS 和安卓原生页面,做不到完全一致,尤其是复杂页面,样式或功能存在差异。编译出来两个平台的原生 App 往往是一个正常,另一个会出现各种奇怪的小毛病。React Native 的底层还是没有做到无缝适配,它至今没有发布 1.0 版(2019年底是 0.61 版),这多多少少也说明了一些问题

    如果想用 React Native 做到 iOS 和安卓体验一致,并且充分发挥原生控件的功能,就需要同时熟悉 React Native、iOS、安卓三个平台,这对开发者的要求实在太高了。Airbnb 公司在使用 React Native 两年后,宣布放弃,改用原生技术栈。他们写了一篇很长的文章,解释为什么这么做,React Native 到底有什么问题,大家可以参考那篇文章。

    Flutter

    Flutter解决H5 APP和原生APP所面临的问题
    Flutter 是谷歌公司最新的跨平台开发框架。它为了解决 React Native 的平台差异问题,采用了一个完全不同的方案

    它自己实现了一套控件。打包的时候,会把这套控件打包进每一个 App,因此不存在调用原生控件的问题。不管什么平台,都调用内嵌的自己那套控件,就能做到 iOS 和安卓体验完全一致


    手机 App 的技术栈
    1. 原生 App 技术栈 (native technology stack)
      原生技术栈指的是,只能用于特定手机平台的开发技术。比如,安卓平台的 Java 技术栈,iOS 平台的 Object-C 技术栈或 Swift 技术栈
    2. 混合 App 技术栈 (hybrid technology stack)
      混合技术栈指的是开发混合 App 的技术,也就是把 Web 网页放到特定的容器中,然后再打包成各个平台的原生 App。所以,混合技术栈其实是 Web 技术栈 + 容器技术栈,典型代表是 PhoneGap、Cordova、Ionic 等框架。如果已经掌握了 Web 技术,这个技术栈就主要学习容器提供的 API Bridge,网页通过它们去调用底层硬件的 API。
    3. 跨平台 App 技术栈 (cross-platform technology stack)
      跨平台技术栈指的是使用一种技术,同时支持多个手机平台。它与混合技术栈的区别是,不使用 Web 技术,即它的页面不是 HTML5 页面,而是使用自己的语法写的 UI 层,然后编译成各平台的原生 App。这个技术栈就是纯粹的容器技术栈,React Native、Xamarin、Flutter 都属于这一类。学习时,除了学习容器的 API Bridge,还要学习容器提供的 UI 层,即怎么写页面

    H5 开发主要用在混合技术栈。但是,跨平台技术栈的某些容器也会用到(比如 React Native),因为它们的 UI 层借鉴了 Web 模型。

    另外,混合技术栈和跨平台技术栈的基础,都是原生技术栈,因为最终都要编译成原生App。所以,不管使用哪一种技术栈,多多少少要了解一些各平台的原生技术。

    下面就依次介绍上面三类技术栈,每个技术栈都会给出一个最简单的例子:加载网页。通过各种技术栈加载网页的不同做法,帮助大家理解它们的特点,对 App 的技术实现有一个总体的认识。

    WebView 控件

    通常情况下,App 内部会使用 WebView 控件作为网页引擎。这是系统自带的控件,专门用来显示网页。应用程序的界面,只要放上 WebView,就好像内嵌了浏览器窗口,可以显示网页。
    不同的 App 技术栈要显示网页,区别仅仅在于怎么处理 WebView 这个原生控件。

    1. 原生技术栈:需要开发者自己把 WebView 控件放到页面上。
    2. 混合技术栈:页面本身就是网页,默认在 WebView 中显示。
    3. 跨平台技术栈:提供一个 WebView 的语法,编译的时候将其换成原生的 WebView。

    不同系统的 WebView 控件名称不一样,安卓系统就叫 WebView,iOS 系统有较老的 UIWebView,也有较新的 WKWebView,作用都是一样的,差异在于功能的强弱

    总结
    1. 原生技术栈的技能和体验最好,对于复杂的大型 App,如果条件允许,应该采用这种方式开发。
    2. 混合技术栈的成本低,灵活性好,对性能要求不高的简单 App,尤其是纯展示性的页面,可以采用这种方式开发。
    3. 跨平台技术栈适用于,存在外部或内部条件的限制,只有一个团队开发跨平台 App 的情况。
    展开全文
  • 浅谈手机软件开发

    千次阅读 2008-02-28 16:46:00
    1 手机软件的运行环境1.1 概述手机可以被看作袖珍的计算机。它有CPU、存储器(flash、RAM)、输入输出设备(键盘、显示屏、USB和串口)。它还有一个更重要的I/O设备, 那就是空中接口。手机通过空中接口协议(例如GSM...

    1 手机软件的运行环境

    1.1 概述

    手机可以被看作袖珍的计算机。它有CPU、存储器(flash、RAM)、输入输出设备(键盘、显示屏、USB和串口)。它还有一个更重要的I/O设备, 那就是空中接口。手机通过空中接口协议(例如GSM、CDMA、PHS等)和基站通信,既可以传输语音、也可以传输数据。
    手机的CPU一般不是独立的芯片,而是基带处理芯片的一个单元,也称作CPU核。基带处理芯片是手机的核心,它不仅包含CPU核、DSP核这些比较通用的单元,还包含通信协议处理单元。通信协议处理单元和手机协议软件一起完成空中接口要求的通信功能。
    随着芯片技术的不断发展,越来越多的外围电路可以被集成到基带处理芯片中,例如BAP,即基带模拟处理器。这样手机才可能越做越小、越做越便宜。

    1.2 单CPU和双CPU

    很多手机只有一个CPU,也就是基带处理芯片中的CPU核。在这个CPU上既要跑通信协议,又要实现用户界面(称作UI或MMI)。当然DSP会分担一些计算量繁重的工作,例如语音编解码、安全层的各种算法等。
    在市场推动下,手机功能在不断发展。摄像头、MP3、蓝牙这些功能可以依靠硬件,对CPU的压力还不是很大,但java虚拟机、嵌入式浏览器等应用软件就会对CPU资源有较高的要求。
    单CPU的首要任务是完成通信协议。通信协议软件有着很精确的定时要求,如果这个CPU还要兼顾很多应用软件的话,就难免吃力。于是双CPU手机应运而生。
    顾名思义,双CPU手机就是有两个CPU的手机,一个CPU专心把通信协议做好,另一个CPU负责UI、java虚拟机、嵌入式浏览器等应用功能。两个CPU可以做在一个芯片里面,也可以分开。
    市场上的实际情况是,很多手机设计公司(Design House)没有基带处理芯片的开发能力,他们购买国外公司的手机模块,自己在外面再加一块CPU。模块跑通信协议,自己加的CPU跑UI和应用软件,两者通过串行口通信。很多Design House也会购买国外方案商的开发板级方案,自己做PCB、软件上改改UI和外设驱动。
    市场上的智能手机基本上全是双CPU方案,什么Windows CE、SmartPhone、WindowsMobile、Symbian、嵌入式Linux全是运行在第二块CPU上的。这些商业操作系统无法和无线通 信协议软件集成到一块CPU上。双CPU的手机功能比较多,但它们一般体积大,耗电多,成本高。现在市场上的大部分手机还是单CPU的。
    目前的大部分手机应用,例如Java、BREW、WAP、邮件、摄像头、闪存、MP3、蓝牙,在单CPU方案里都能实现。我认为不管3G、4G如何发展, 小巧、实用、低成本的单CPU方案总会占据较大的市场份额。微软在单CPU方案的手机市场还没有立足之地,又怎么谈的上什么引领方向呢?
    本文主要介绍单CPU手机,大多数论述也适用于双CPU方案的通信CPU。

    1.3 3G和4G

    3G和4G是指第三代、第四代无线通信技术,对手机而言,它们改进的是空中接口的效率,空中接口能以更大的带宽传送数据。通过手机无线上网的速度会更快。这和话音业务、手机应用软件没有直接的联系。
    当然,手机的嵌入式数据业务由于更高的带宽,会产生更多的可能性。不过这些可能性的实现还是会受到手机输入慢、显示屏小等条件的制约。

    2 手机软件的组成

    2.1 概述

    手机软件和PC机软件一样从中断向量表开始,因为比较小,看上去更加清晰。中断向量表的第一个跳转指令当然是跳到复位的处理程序,后面是中断处理、错误处 理的跳转指令。一上电,手机就跳转到复位的处理程序,开始检查内存、初始化C运行环境,然后创建第一个任务。这个任务会按顺序创建、启动其它任务。绝大多 数手机程序都是多任务的,但也有一些小灵通的协议栈是单任务的,没有操作系统,它们的主程序轮流调用各个软件模块的处理程序,模拟多任务环境。
    手机软件可以粗略地分成启动模块、操作系统、协议栈、数据业务、本地存储、驱动程序、用户界面和其它应用。启动模块前面已经说过了,下面简单介绍其它部分。

    2.2 操作系统

    操作系统在手机软件只占很小一部分。它的主要功能就是提供多任务调度、通信机制。有的操作系统会提供动态内存分配,定时函数,但这些都不是必须的。例如需要动态内存分配的模块,可以自己管理一个内存池,这样更易于隔离模块和预测内存需求。
    大多数手机的操作系统都是一个很小的内核,例如REX、HIOS等。高通REX的源代码连C代码加汇编也不过一千多行,编译后不过是2、3K的代码量。而一般手机软件有几百到上千个源文件、超过一百万行的代码。

    2.3 协议栈

    协议栈是手机软件最复杂的部分,它的复杂性在于它和基带处理芯片的设计密切相关。只有具备芯片设计能力的企业才可能开发协议栈。协议栈会使用基带处理芯片的所有资源。

    2.4 数据业务

    数据业务主要有两种:在前一种,手机相当于一个调制解调器,PC机通过手机上网,网络协议全在PC机上,手机提供数据链路。另一种就是嵌入式数据业务,手机内部包含TCP/IP/PPP等协议,有时还要实现HTTP和嵌入式浏览器。

    2.5 本地存储

    手机都有本地存储功能,存储电话本、短消息、用户设定等。一般手机都有一个基于flash的文件系统。早期的手机存储是基于EEPROM的。

    2.6 驱动程序

    硬件驱动一般指外设驱动,不过有的外设已经被集成到基带处理芯片中了。驱动程序包括键盘、电源管理模块、LCD、flash、RTC、串口、USB、SIM卡或UIM卡、射频驱动等。

    2.7 用户界面

    用户界面(UI)又称作人机界面(MMI),它负责和用户的交互,在必要的时候调用其它模块的功能。除了手机的必备功能外,用户界面也可能包含一些相对独立的应用程序,例如日程表、游戏等。

    2.8 其它应用

    其它应用包括Java虚拟机、WAP浏览器、邮件软件等,是一些比较大,又相对独立的应用模块。

    基本上讲完了。大家肯定看得挺没意思吧。这些程序和微软的longhorn、metedata有什么关系呢?手机程序绝大部分是用C语言写的。但对于做应用软件的程序员要求具备面向对象、设计模式的思维能力,然后用C语言实现出来。
    高通的BREW就是用C语言硬生生地模仿C++,弄出很多奇怪的宏。一般应用软件的开发不用这么死板,但对各种软件设计方法的了解还是必要的。

    3 手机的核心技术

    手机的核心技术是芯片和协议栈,两者是密不可分的。芯片设计需要协议栈来验证,协议栈必须充分发挥出芯片的功能。芯片的CPU核、DSP核都可以买到现成的单元,但通信协议部分就需要自己设计了。手机比较难做好的是耗电量、恶劣信号环境的性能等。

    4 第三方软件

    4.1 原理

    “第三方软件”这个词的含义比较宽泛。本文用它来指代不是硬编码在手机里,而是可以通过数据线或网络下载到手机上,可以装载、运行,也可以删除的软件。
    前面讲到的软件都是完整程序的各个部分。这些部分会被放到一起编译,产生一个二进制文件,通过JTAG口(升级时可以用串口)下载到手机的flash中。手机一上电,就会从指定地址开始运行。这个地址的内容就是跳转到复位处理程序的跳转指令。哈哈,又讲回头了。
    第三方软件是指手机可以通过数据线或者网络下载一些可执行文件到文件系统中。然后有一个装载器可以执行这些文件。这样第三方就可以开发一些应用程序,下载到手机中来扩充手机功能。
    这些可执行文件现在主要有两种格式:java程序和BREW程序。java程序需要java虚拟机装载运行。BREW程序是一个很奇怪的东西,它实际就是用与编译手机程序相同的编译器编译出来的目标代码。这些目标代码必须是可以重新定位的,即不能包含全局和静态变量。
    装载器将程序将执行权传给给BREW程序,一种听上去更安全的说法是调用BREW程序的入口函数。这个入口函数的位置在文件中是固定的。装载器在调用 BREW程序的入口函数时会传入一个地址。通过这个地址,BREW程序能够顺藤摸瓜,找到系统提供的各种API的地址,它通过这些API访问手机的显示、 通信等功能。
    java程序基本上是平台无关的,针对各种平台设计的java虚拟机隔离了平台的大部分特性,除了厂家特意提供的一些OEM功能。BREW程序显然是平台相关,换一个CPU,就不认识原来的目标码了。

    4.2 其它

    除了java、BREW外,Windows CE、SmartPhone、WindowsMobile、Symbian、嵌入式Linux这些商业操作系统当然可以提供各种创建第三方程序的方法。在 这些环境写程序和在PC平台写程序很相近,基本上体会不到嵌入式编程的特点,只是屏幕小一些,输入麻烦一些。
    这些第三方软件不是必需的。手机在3G的市场中只占了一个较小的部分,网络是大头。而第三方软件相对于手机来说,所占的份额就更小了。
    《程序员》有一个嵌入式移动开发的专栏,总在讲这些手机第三方软件的开发手机软件只是嵌入式软件的一部分。第三方软件在嵌入式移动开发中又能占到多少比重呢?

    5 结束语

    需要说明:关于以后的市场究竟以单CPU手机为主,还是以双CPU手机为主的问题,我倾向于单CPU手机,但这只是我个人观点。实际市场会怎么发展,殊难预料。
    对于一个芯片两个CPU核的方案,从软件角度看我是很赞成的。将应用软件和协议软件分开,协议软件可以更加稳定,应用软件可以自由发展,使用大量在PC环境已经成熟的技术。 
    展开全文
  • 记一次完整手机APP项目的开发

    万次阅读 多人点赞 2017-11-12 20:51:47
    写在前面从2015年12月开始到2017年3月在一个创业团队完整参与了一个运动类的手机APP的开发,虽然最后这个项目失败了但是我学到了很多东西,现在已经过去一段时间了可能已经忘记了一部分细节的东西了但是希望通过博客...
  • 现在以手机app为代表的移动互联网已经超过传统的PC,成为企业营销创业赚钱不可忽视的重要渠道,手机软件开发app成为传统企业转型的关键。app开发具体需要哪些流程和周期呢?今天给大家分享一下app开发流程的6个步骤...
  • 手机, 软件开发 1 手机软件的运行环境 1.1 概述 手机可以被看作袖珍的计算机。它有CPU、存储器(flash、RAM)、输入输出设备(键盘、显示屏、USB和串口)。它还有一个更重要...
  • 软件环境、硬件环境、开发工具

    万次阅读 2016-08-31 23:54:34
    软件环境:Windows操作系统 硬件环境:Android手机 开发工具:MyEclipse、AndroidStudio
  • 安卓APP开发优势和概述

    万次阅读 2017-10-23 11:46:50
    一、安卓软件开发概述 Android由Google公司和开放手机联盟领导及开发,主要使用于移动设备,如智能手机和平板电脑。中国大陆地区较多人使用“安卓”或“安致”。安卓APP是一种手机应用软件,是使用在安卓手机上或者...
  • 各位大神,我是刚培训出来的,刚面试一个公司,是做手机APP的,我培训班没教过APP的开发,不知道和开发BS应用有啥区别呢?我现在不知道这个APP的具体功能是什么?要什么需求?就一般情况来说,开发APP我可能会用到...
  • 基于Qt ffmpeg opengl开发跨平台安卓实时投屏软件

    万次阅读 多人点赞 2019-06-23 15:19:17
    基于Qt ffmpeg opengl开发跨平台安卓实时投屏软件 课程介绍 课程地址:https://edu.csdn.net/course/detail/10750 本课程是一个音视频相关的Qt项目的实战教程,涉及Qt开发实际项目的完整流程。基于qt ffmpeg opengl...
  • 因为从事互联网领域的工作,所以总会收到很多朋友的询问,表示想建立一个App,或创业,或是增长线上渠道,或者仅作为个人的一个小工具,小平台,但是又苦于不懂软件开发技术,咨询专业的外包公司,价格都太高,不...
  • 其实游戏开发本质上是软件开发的一种...软件开发无论是桌面应用程序、Web应用、游戏亦或是手机APP,都属于软件开发的范畴。桌面应用程序比如网易云,浏览器等等,一般多用C#写界面,看起来会更加友好。Web应用的前端...
  • 什么是SDK

    万次阅读 多人点赞 2016-08-19 00:57:29
    sdk (软件开发工具包) 软件开发工具包括广义上指辅助开发某一类软件的相关文档、范例和工具的集合。 软件开发工具包是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具...
  • 安卓APP开发发展趋势与前景

    万次阅读 2018-01-06 17:32:39
    安卓(Android)是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动终端设备,如市场上的智能手机和IPAI平板电脑,由Google公司和开放手机联盟领导及开发。众所周知,安卓系统平台以开源性和丰富的扩展性...
  • 如何在手机上进行编程?

    万次阅读 多人点赞 2018-11-30 20:09:14
    这里介绍几个可以在手机上编程的软件,感兴趣的可以下载一下,试着操作一下: 1.Python:这里推荐一个软件—QPython3,集成了Python3解释器、Console控制台和QEdit编辑器,可以直接编辑运行python代码,也可以进行...
  • 记得在两年前就有一个快递行业的朋友向我咨询,有没有APP可以直接识别出快递单上的手机号码,然后进行拨打电话,这样他就不用每天用手机键盘去一个个的输入数字了。每天他的员工每个人都要打几十个甚至上百个电话,...
  • Android实现手机和电脑屏幕共享

    万次阅读 2018-12-12 15:22:04
    Android开发中,最近遇到了一个这样的问题,项目开发中,你可能会被要求向客户演示你开发的项目成果,当然,你可以采用一般的方式PPT,但是如果你是给客户演示,为了效果更好的话当然是实时操作,这就需要软件来进行...
  • 这里介绍几款可以在手机上编程的app,分别是: 1.java和Android:AIDE集成开发环境。 2.C语言:c语言编译器、C4droid。 3.python:QPython3、Termux。 4.CSS/HTML/JavaScript:HTMLplay。 大部分都不需要root,...
  • 浅谈当前的手机开发技术

    千次阅读 热门讨论 2010-06-19 18:46:00
    随便聊聊现在的各种手机软件开发技术
1 2 3 4 5 ... 20
收藏数 239,300
精华内容 95,720
关键字:

手机软件开发