HTML5+PLUS移动APP开发入门

来源:互联网 发布:万宝路黑冰爆珠淘宝 编辑:程序博客网 时间:2024/06/05 13:21

HTML5plus 移动 App开发入门

HTML5 Plus 应用概述

html5 Plus 规范

通过 Html5 开发移动 App 时,会发现 HTML5 很多能力不具备。为弥补 HTML5 能力 的不足,在 W3C 中国的指导下成立了 www.HTML5Plus.org组织,推出 HTML5+规范。
HTML5+扩展了 JavaScript 对象 plus,使得 js 可以调用各种浏览器无法实现或实现不佳的系统能力,设备能力如摄像头、陀螺仪、文件系统等,业务能力如上传下载、二维码、地图、支付、语音输入、消息推送等。
HBuilder 的手机原生能力调用分 2 个层面:
a) 跨手机平台的能力调用都在 HTML5+ 规范里,比如二维码、语音输入,使用
plus.barcode 和 plus.speech。编写一次,可跨平台运行。
b) JS Bridge是另一项创新技术,通过 js 可以直接调 iOS 和 Android 的原生 API,这部 分就不再跨平台,比如调 ios game center,或在 android 手机桌面创建快捷方式。 JSB 的用法是,var obj= plus.android.import(“android.content.Intent”);,将一个原生对 象 android.content.Intent 映射为 js 对象 obj,然后在 js 里操作 obj对象的方法属性就可以了。

HTML5+ App

使用 HTML5+开发的移动 App 并非 mobileweb 页面。这是新手最容易混淆的地方。 mobileweb 的文件存放在 web 服务器上,而移动 App 的文件存放在手机本地,编写移动 App 的 html、js、css文件被打包到 ipa 或 apk 等原生安装包,在手机客户端运行。
当然这些移动 App 里某些页面也可以继续从服务器端以网页方式下行。
所以 mobile web,在 HBuilder 里新建项目时,属于 web 项目。不要放置到移动 App 项 目下。mobile web 项目也不能真机联调和打包。
举几个例子。
例 1:一个 mobile web 项目,想打包成移动 App。
a) 在 HBuilder 里新建一个 web 项目,把 mobile web 代码放进去。
b) 在 HBuilder 里新建移动 App
c) 在新建的移动 App 下找到 manifest.json,将其中的入口页面配置为 mobileweb 的网 络地址。
d) 然后点发行打包,就得到一个移动 App 的安装包。除了可发行到 Appstore 和桌面 有个快捷方式外,与浏览器的体验不会有其他区别。
e) 另外其实 mobile web 的代码,也可以判断自己运行的环境,如果 UA 里包含 “Html5Plus”,也可以写 plus 对象来调用原生能力。

例子 2:正规的移动 App(没有网页进度条)
a) 在 HBuilder 里新建移动 App 项目
b) 在移动 App 里编写 html、Js、css 文件,本地 js通过 ajax 方式请求服务器数据,通过 plus.NET 对象避开跨域限制。
c) 移动 App 里的 js 可以通过 plus 对象调用手机原生能力
d) 编写好的移动 App 点打包变成安装包。 例子 3:混合型移动 App
这里的混合型移动 App,所指并非是原生和 HTML5 的 hybridApp,而是指一部分 页面是本地的 HTML,通过 ajax 与服务器交互,另一部分页面是从服务器下行的 mobileweb页面。
a) 分别新建一个 web 项目和一个移动 App 项目
b) 在移动 App 里的某个 html 里通过

Events

提供应用的事件管理能力,如应用前后台切换,网络变化等。
File
plus.io.*
提供文件系统访问能力。
Gallery
plus.gallery.*
提供访问系统相册能力。
Geolocation
plus.geolocation.*
提供系统的 GPS 信息管理能力。
Invocation
plus.ios.*
plus.android.*
提供直接调用系统 Native API 能力。
Messaging
plus.messagin.*
提供设备的通讯能力。
Orientation
plus.orientation.*
提供设备方向感应器管理能力。
Proximity
plus.proximity.*
提供设备距离感应器管理能力。
Storage
plus.storage.*
提供应用本地数据存储能力。
UI
plus.ui.*
提供多窗口管理能力。
Uploader
plus.uploader.*
提供应用文件上传任务管理能力,支持跨域网络访问。
Runtime
plus.runtime.*
提供应用运行环境管理能力。
XMLHttpRequest
plus.net.*
提供网络请求能力,支持跨域网络访问。
Zip
plus.zip.*
提供文件的压缩和解压能力。

第三方插件能力

特性
API
功能
Barcode
plus.barcode.*
提供二维码扫描能力。
Maps
plus.maps.*
提供原生地图展现能力(百度地图)。
Payment
plus.payment.*
提供第三方支付能力(支付宝)。
Push
plus.push.*
提供消息推送能力(MKey 企业内网专用 push、个推)。

Share
plus.share.*
提供第三方分享能力(新浪微博、腾讯微博、微信)。
Speech
plus.speech.*
提供第三语音识别能力(讯飞语音云)。
Statistic
plus.statistic.*
提供第三方统计能力(友盟统计)。

开发环境 HBuilder

HBuilder 内置 HTML5+ APP 开发环境,提供一套完整的移动应用开发解决方案。内置HTML5+ API 语法提示,提高开发效率;集成真机运行环境,方便开发后即时在真机上查看 运行效果;集成应用云端打包系统,不用部署 xcode和 Android sdk 就可以打包应用。使开 发者只需要使用 HTML5、CSS、CSS 技术就可以快速开发跨平台的移动应用。
下载地址:http://www.dcloud.Net.cn/

平台支持

l iOS 5.0 及以上
l Android 2.3 及以上
l WP 8.0 及以上(开发中)

手把手教你开发 HelloWord

创建 HelloWord 应用

l 启动 HBuilder
l 在菜单栏中选择“文件”-> “新建”->“移动 App”,打开“创建移动 App”对话框,在应用名称中输入“HelloWorld”
注意新建移动 App 需要联网分配一个 appid,在真机联调、打包发行时都需要这个 ID, 所以不联网无法创建移动 App。

l 创建完成后,会在项目管理器中显示新建的“HelloWorld”项目

manifest.json

在项目管理器中双击“manifest.json”文件,打开程序信息配置页面:

应用基础信息

l 应用名称:应用安装到手机上显示的名称;
l appid:应用标识,用于云平台打包,不可修改;
l 版本号:应用发布的版本号;
l 入口页面:应用启动后默认显示的页面,可以是网络地址;
l 重力感应:应用在手机上开启重力感应时可切换的方向;

平台选择

平台选择后则可设置对应云平台的应用图标和启动界面,点击图标则可弹出文件选择对话框,按照提示尺寸选择对应分辨率启动图标和启动界面图片:

编辑完成后,按 Ctrl+S 键保存。

调用 HTML5+ API

在项目管理器中双击“index.html”文件,对于 HTML5+应用的页面有一个很重要的 “plusready”事件,此事件会在页面加载后自动触发,表示所有 HTML5+ API 可以使用, 在此事件触发之前不能调用 HTML5+ API,所以应该在此事件回调函数中调用页面初始化需 要调用的 HTML5+ API,而不应该在 onload 事件中调用:






hello world

// 扩展 API 加载完毕后触发“plusready"事件document.addEventListener( "plusready", function() {var self = plus.ui.getSelfWindow();// ... code}, false );



……

编辑程序启动后默认显示的页面 index.html,在页面中添加一个按钮,点击后将打开新
页面加载“http://www.baidu.com/”,为了实现此功能,我们需要用到 HTML5+扩展 API 中
plus.ui.createWindow()方法创建窗口:

编辑完成后,按 Ctrl+S 键保存。

真机运行

添加调用 HTML5+API 代码后,我们可以通过真机运行来查看效果,在本地编辑的页面保存后可同步在真机上看到保存后的显示效果。
注意只有移动 App 项目才可以真机联调。

iOS 真机运行

在 HBuilder 的“项目管理器”中选择创建的“HelloWorld”应用。

启动真机运行

将 iOS 设备连接到电脑,这时 HBuilder 会自动检测连接到电脑上的设备,通过菜单栏 中的“运行”菜单启动:

也可通过工具栏启动:

注:如果没有发现设备,则确认设备是否安装 iTunes 程序,是否升级到最新版本?或者尝 试重新连接数据线!

安装真机运行环境

启动真机运行后,HBuilder 会自动在设备上安装真机运行环境,并在控制台中显示以下信息:
注:如果提示错误信息,请尝试点击“终止”按钮后重新启动真机运行!

真机运行应用

在 iOS 设备上可看到新安装的 HBuilder 应用图标,手动点击运行
注意:真机联调 App 时,提供的是一个测试环境,并不真实发生打包,手机端 App 界 面还有 develop 的水印,其手机桌面显示名字为 HBuilder,图标也是 HBuilder 的图标,此时 并不是开发者真实 App 的名字图标。正式的 App 需要通过发行-打包来制作,打包后的 App 名字图标都是开发者定义的,里面也没有 develop 的水印。

启动后会弹出提示框,选择“确定”,显示以下页面:

Android 真机运行

将 Android 设备连接到电脑,这时 HBuilder 会自动检测连接到电脑上的设备,通过菜单 栏中的“运行”菜单启动:

也可通过工具栏启动:

注:如果没有发现设备,请安装 360 手机助手等手机驱动,保证手机和 PC 可以连接。尝试 重新连接数据线。另外有些数据线质量不好,会无法稳定连接。

运行一次后,关闭时务必点停止运行的红色方块按钮,否则下次连接很可能阻塞。

安装真机运行环境

启动真机运行后,HBuilder 会自动在设备上安装真机运行环境,并在控制台中显示以下信息:

注:如果提示错误信息,请尝试“终止”后重新启动真机运行!

真机运行应用

在 Android 设备会自动安装 HBuilder 应用,在桌面上可看到新安装的 HBuilder 应用图 标(有些设备会在应用列表页面中):
注意:真机联调 App 时,提供的是一个测试环境,并不真实发生打包,手机端 App 界 面还有 develop 的水印,其手机桌面显示名字为 HBuilder,图标也是 HBuilder 的图标,此时 并不是开发者真实 App 的名字图标。正式的 App 需要通过发行-打包来制作,打包后的 App 名字图标都是开发者定义的,里面也没有 develop 的水印。

启动后会弹出提示框,选择“确定”,显示以下页面:

部署发布

完成应用页面的编辑后,需要正式发布到个大市场,这时需要从云平台进行安装包的制
作。通过菜单栏中的“发行”->“App 打包”,打开“App 云端打包”对话框提交。 注意只有移动 App 项目才可以打包。

iOS 发布

对于 iOS 平台,可以选择越狱包或正式包(Appstore 专用),前者只能安装在已越狱的设备上,后者则可通过 iDP 证书打包提交到 Appstore 发布、或通过 iEP 证书打包在企业内 部发布。

配置打包信息

l 越狱包

AppID:iOS应用标识,推荐使用反向域名风格的字符串,如“com.domainname.appname”。

l 正式包

AppID:iOS 应用标识,推荐使用反向域名风格的字符串,如“com.domainname.appname”, 必须与 profile 文件绑定的 App ID 匹配。
私钥证书:iOSCertificates 文件(.p12); 私钥密码:导入私钥证书的密码;
Profile 文件:iOSProvisioning Profile 文件(.mobileprovision),必须与 App ID 和私钥证书 区配;

查看打包状态

通过菜单栏中的“发行”->“查看打包状态”,打开“查看 App 打包状态”对话框,可 查看打包历史记录和状态:

如果“制作状态”栏显示“打包成功,下载完成”则表示云端打包完成,可点击“打开 下载目录”查看下载的安装包。

Android 发布

对于 Android 平台,可以选择使用 DCloud 生成的公用证书或自己生成的证书,两者不 影响安装包的发布,唯一的差别就是证书中开发者和企业信息不同。

生成 Android 签名证书

(使用DCloud 公用证书可忽略)确保电脑上安装了JRE,我们将使用JRE 自带的创 建和管理数字证书的工具 Keytool。使用以下命令生成证书:

-keystore helloworld.keystore 表示生成的证书,可以加上路径(默认在用户主目录下);
-alias helloworld 表示证书的别名是 helloworld;
-keyalg RSA 表示采用的 RSA 算法;
-validity 10000 表示证书的有效期是 10000 天。

配置打包信息

l 使用 DCloud 公用证书

App 包 名 : Android 应 用 包 名 , 推 荐 使 用 反 向 域 名 风 格 的 字 符 串 , 如“com.domainname.appname”。

l 使用自有证书

App 包 名 : Android 应 用 包 名 , 推 荐 使 用 反 向 域 名 风 格 的 字 符 串 , 如“com.domainname.appname”。
证书别名:生成证书时使用-alias 参数设置的证书别名; 私钥密码:生成证书时使用的 keystore 密码;证书文件:生成证书时使用-keystore 参数设置的证书保存路径;

查看打包状态

通过菜单栏中的“发行”->“查看打包状态”,打开“查看 App 打包状态”对话框,可查看打包历史记录和状态:

如果“制作状态”栏显示“打包成功,下载完成”则表示云端打包完成,可点击“打开 下载目录”查看下载的安装包。

FAQ

HTML5+是否提供 UI 框架

HTML5+本身不包括任何 UI框架,我们推荐使用轻量级 UI框架 Ratchet,其他框架如 Sencha Touch、jQuery Mobile、jQTouch、PhoneJS 等性能略差,在一些低端Android 机上无 法流畅运行。HBuilder 中内置了Ratchet 模板。
l 新建移动 App,在菜单栏中选择“文件”->“新建”->“移动 App”
l 在创建移动 App 对话框中选择“Ratchet”模板:

只能云端打包吗?支持本地打包吗?

支持本地打包,目前已经有开发者在内测该功能,未来会全面开放。

js 不能跨域,本地 HTML5 如何与服务器交互?

使用 plus.net 对象可以跨域

plus 对象浏览器不支持啊,是不是需要引用什么 js 框架?

不需要引入 js框架,plus 对象需要系统底层支持而不是单纯的一个 js 框架就能解决问
题。
plus 对象在 DCloud 的 5+runtime 里已经实现。使用 HBuilder 打包时,是把工程里的 html、
js、css 和 DCloud 的 5+runtime 混编打包成 ipa 或 apk 的。
也可以把 5+runtime 理解为 cef,一种没有地址栏的、实现了 plus 对象的增强浏览器内
核。

plus 规范是开放的吗,我可以自己实现plus 的 runtime 或 在我自己的浏览器里支持 plus 对象吗?

plus 规范属于 HTML5Plus.org,是开放规范,任何公司或个人都可以基于 HTML5+规范 开发自己的手机端实现。

什么是“响应式应用”:

一套代码根据不同运行环境调用不同能力来优化用户体验。 比如文本框,在普通浏览器下就是一个文本输入框,在 Chrome 浏览器下运行时加个判
断调 Chrome 的语音输入,而运行在 App 模式下,则再加一个判断调用原生的语音识别 SDK, 比如 plus.speech。
这样一个应用可以根据设备的不同而最大化的优化用户体验,这种模式很有魅力,对用 户而言体验更好,对开发者而言成本更低。

iOS 如何安装越狱包

iOS 设备需要进行越狱操作(威锋网越狱教程)后才能安装越狱包,通常可以使用第三 方工具进行管理,如 iTools(官网):

使用 iTools 工具安装

l 安装 iTools 工具并启动(注:需安装 iTunes工具)
l 将 iOS 手机连接到电脑,这时 iTools 工具会提示发现设备,并确定设备越狱状态为“已 越狱”:

l 右侧设备下选择“应用程序”,点击“安装”选择越狱包 ipa 文件:

l 安装完成后即可在手机上打开运行

iOS 安装越狱包提示“验证失败”错误

iOS 设备需要进行越狱操作(威锋网越狱教程)后才能安装越狱包,对于 iOS7.x 系统 越狱操作后需要确认是否安装安装 afc2add、AppSync 工具?

安装 afc2add、AppSync 工具

l 打开 cydia
l 选择“软件源”-> “编辑” -> “添加”,输入 APT 地址:

l 添加源完成后,在搜索页面搜索工具并安装。

HBuilder 可以开发 phonegap 应用吗?

首先 HBuilder 的语法提示库是开放的,基于 xml 语法库文件或 jsdoc 这 2 种方式,可以 制作任意语法提示。
这部分的开源地址是:https://github.com/dcloudio/WebFrameworkGrammar
只要有人制作了 phonegap 语法提示文件,导入到 HBuilder 里就可以提示。
HBuilder 支持 eclipse 插件,开发者完全可开发一个 eclipse 插件装到 HBuilder 上,实现

phonegap 打包等功能。

原文地址:
HTML5中国产业联盟:

原创粉丝点击