|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
关于iOS开发的学习打个比方就像把汽车分解最底层的原料有塑料钢铁再用这些底层的工具造出来发动机座椅最后再加上写螺丝胶水等把汽车就拼起来了iOS基本都是英文的资料统统源自iPhone。
2008年旧金山的iPhoneDevCamp上,来自Nitobi的工程师BrockWhitten、RobEllis和AndreCharland萌生并开端完成了一个设法:构建一个Web手艺和Objective-C之间的桥梁,即让Web手艺和Objective-C之间可以互联互通。经由过程尺度的Web手艺(HTML、JavaScript、CSS),开辟者可以开辟相似当地使用的iPhone程序。
这是一个尺度以外的天下,经由过程非尺度的类“黑客”体例,这类手艺添补了Web和智能挪动设备当地SDK之间的鸿沟。这个设法迅即取得了大批撑持,并提高到了Android、WindowsPhone、Symbian、黑莓、webOS和bada各个平台。
PhoneGap出生了。
PhoneGap是甚么
PhoneGap是为挪动使用开辟者筹办的,利用HTML、JavaScript和CSS等Web手艺创立跨平台挪动使用的基于尺度的开源开辟框架。利用PhoneGap,Web使用开辟者的开辟范围被进一步拓展到类当地使用(夹杂使用)的开辟范畴。总的来讲,PhoneGap从以下三个方面匡助开辟者。
打包:关于尺度的Web使用,消耗者必要翻开挪动设备上的扫瞄器,输出URL后才干会见。而PhoneGap能够打包Web使用为当地使用格局,好比iOS的ipa、Android的apk。关于消耗者来讲,经由过程PhoneGap打包的使用和利用当地SDK(好比iOS的Objective-C、Android的Java)开辟的使用没甚么区分。消耗者必要到挪动使用商铺下载这些使用,安装运转。为了便利起见,鄙人文中我把这些利用Web手艺开辟、经由过程PhoneGap打包本钱地格局的挪动使用统称为“PhoneGap使用”。
会见智能挪动设备当地特征:智能挪动设备上的古代扫瞄器供应了一些当地特征的会见,好比GPS。但是,关于挪动使用开辟来讲,必要可以会见更多的当地特征,好比设备摄像头、设备信息、通信录等。
PhoneGap供应了诸多当地特征的JavaScriptAPI接口,使得开辟者利用JavaScript便可会见这些扫瞄器自己不克不及够撑持的当地特征。
扩大插件:PhoneGap在不休推出会见当地功效的新API接口,但关于挪动使用开辟者,仍旧大概必要会见一些PhoneGap尚不撑持的功效,大概但愿可以利用当地API来办理一些必要重度盘算的功效。这时候,PhoneGap供应了一套插件系统来匡助开辟者定制扩大插件。现实上,尺度的PhoneGap当地API也是以插件的体例供应的。经由过程插件体例,开辟者可使用平台指定的当地言语(比方Java)编写功效,并经由过程JavaScript把这些定制化的当地代码表露出来供PhoneGap使用会见。
<br>在分歧平台上,PhoneGap1.3撑持当地特征概览
PhoneGap不是甚么
PhoneGap既不是JavaScript框架,也不是相似jQueryMobile如许的挪动使用框架,PhoneGap也不供应IDE情况。
开辟者仍旧必要依附相似JQueryMobile,SenchaTouch如许的第三方Web挪动使用开辟框架开辟基础的Web挪动使用。但PhoneGap撑持这些挪动使用开辟框架。现实上,PhoneGap其实不范围于任何一种JavaScript框架。
PhoneGap近况
停止本文宣布时,PhoneGap的最新版本是1.4。2011年10月,Adobe公司收买了PhoneGap并将其奉献给Apache软件基金会,定名为ApacheCallback。在经由正式考核和需要的流程前,PhoneGap仍处于孵化器阶段。在这个过程当中,ApacheCallback的称号最近再次变动为ApacheCordova。PhoneGap作为产物的贸易称号仍旧被利用。开辟者能够在Apache和Github上会见PhoneGap的源代码【注:https://github.com/callback或https://svn.apache.org/repos/asf/incubator/callback/】。
打包
我们回到PhoneGap的第一个主要功效—打包。有三种分歧体例打包天生PhoneGap使用。
利用Dreamweaver打包。AdobeDreamweaver能够匡助开辟者创立jQueryMobile+PhoneGap的挪动使用项目,如所示。
为了针对挪动项目,Dreamweaver供应了一种一键式打包命令。但是,这类体例一方脸孔前只撑持iOS和Android这两种挪动平台使用;另外一方面,开辟者仍旧必要先下载并设置平台对应的SDK。
利用分歧平台的IDE和SDK打包。这类加倍间接的打包体例是利用针对分歧平台的IDE情况和对应的SDK手工打包【注:在PhoneGap网站的GetStartedGuide上具体先容了针对分歧平台的打包指南http://phonegap.com/start】。
利用这类体例的话,分歧平台的打包体例略有分歧,开辟者乃至必要本人编写打包代码,比方针对Android平台,并设置相干的设置文件和SDK。只管这些步骤十分复杂,但实践上关于那些但愿可以掩盖尽量多平台的挪动使用开辟者来讲,这类体例仍是十分啰嗦。
利用PhoneGapBuild服务打包。为懂得决烦琐的打包成绩,PhoneGap供应了在线打包服务:PhoneGapBuild【注:毗连为https://build.phonegap.com/】。
开辟者必要注册账号,并上传代码到Github,在完成相干设置后,PhoneGapBuild在云端间接编译打包Web使用为当地格局使用,乃至同时天生相干的使用二维条形码。
<br>创立JQueryMobile+PhoneGap的挪动使用项目
利用PhoneGap会见当地特征
利用JavaScript挪用PhoneGap供应的当地特征,就像利用任何尺度的JavaScript类库。在PhoneGap官方网站上检察编写优秀的当地特征API列表和代码示例【注:链接为http://docs.phonegap.com/en/1.3.0/index.html】,如所示。
我们摘录个中会见活动传感器(Accelerometer)的示例代码来做申明,代码中的正文注释了怎样经由过程JavaScript会见PhoneGap当地API接口。
<!DOCTYPEhtml>
<html>
<head>
<title>AccelerationExample</title>
<scripttype=”text/javascript”charset=”utf-8″src=”phonegap.js”></script>
<scripttype=”text/javascript”charset=”utf-8″>
//监听deviceready事务,守候PhoneGap加载终了
//
document.
addEventListener(“deviceready”,onDeviceReady,false);
//PhoneGap加载终了,监听活动传感器,设定乐成和失利的回调函数(事务侦听器)
//
functiononDeviceReady(){
navigator.accelerometer.getCurrentAccel
eration(onSuccess,onError);
}
//onSuccess:乐成失掉以后在X,Y,Z轴的活动变
化值
//
functiononSuccess(acceleration){
alert(‘AccelerationX:‘+
acceleration.x+‘n’+
‘AccelerationY:‘+acceleration.y+
‘n’+
‘AccelerationZ:‘+acceleration.z+
‘n’+
‘Timestamp:‘+acceleration.
timestamp+‘n’);
}
//onError:失利的事务侦听器
//
functiononError(){
alert(‘onError!’);
}
</script>
</head>
<body>
<h1>Example</h1>
<p>getCurrentAcceleration</p>
</body>
</html>
<br>当地特征和API代码列暗示例
PhoneGap的实质
PhoneGap的实质办理两个成绩:在挪动设备上像当地使用一样运转Web使用;完成JavaScript和当地API之间的挪用和通讯。
在Android和iOS平台上,PhoneGap使用运转在WebView中,详细来讲,在Android平台上,PhoneGap使用运转于WebView组件中,而在iOS上,则运转于UIWebView组件中。
WebView和UIWebView用来在挪动设备上显现网页,两者都利用WebKit引擎。WebView供应了与扫瞄器一样的功效,但不供应扫瞄器边框。WebView体例下运转的Web使用,在用户看来就像当地使用一样。WebView封装了Web使用。上面的代码展现了怎样在Android项目中利用AndroidSDK手工打包PhoneGap使用。
publicclassDemoActivityextendsDroidGap{
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
super.loadUrl(“file:///android_asset/www/index.html”);
}
}
在这个例子中,起首要承继DroidGap父类,并掩盖其onCreate办法。在该办法中挪用super.loadUrl(“file:///android_asset/www/index.html”)来运转PhoneGap打包的使用首页。假如进一步深切检察PhoneGap源码,在PhoneGap供应的父类DroidGap.java中能够看到,DroidGap初始化时实例化了android.webkit.WebView,并在其loadUrl办法中挪用WebView.loadUrl办法加载了指定的URL页面。
以是PhoneGap使用实践上就是运转在挪动设备中WebView组件内的Web使用。
“黑客”的手腕:JavaScript和当地API间的互相挪用
PhoneGap办理的实质成绩其实不仅仅是打包,更坚苦的成绩是怎样完成JavaScript和当地API之间的挪用和通讯。PhoneGap的开辟者依据分歧的挪动平台,接纳了奇妙的体例完成了两者的互相挪用和通讯。
为了到达方针,PhoneGap团队在分歧的平台上接纳了分歧的体例。
iOS:经由过程让当地代码拦阻JavaScript中挪用的window.location=”gap://Class.method/args”命令,来完成从JavaScript到当地代码之间的通讯。在当地代码拦阻该命令后,剖析猎取的参数,然后挪用对应的类、办法并传送参数。对应的,利用UIWebView.stringByEvaluatingJavaScriptFromString来完成当地代码挪用JavaScript。
Android:经由过程拦阻JavaScript的prompt命令完成从JavaScript到当地代码的通讯。JavaScriptprompt命令默许会弹出对话框,而PhoneGap的Android当地代码会拦阻该对话框,并进一步获得JavaScript数据。响应的,Android上的PhoneGap外部,利用Java完成了一个HTTP服务器,经由过程耐久性的XHR毗连,JavaScript能够不休轮询外部XHR服务器存储的信息,从而完成了从Java到JavaScript偏向的通讯。
BlackBerry4.x:JavaScript与当地代码之间的独一通讯体例是经由过程document.cookie完成的。JavaScript设定Cookie,当地代码从Cookie中猎取信息。对应的,当地代码也能够设定Cookie,同意JavaScript从Cookie中猎取当地代码信息。
BlackBerryWebWorks:新的BlackBerryWebWorksSDK更好地撑持了Java与JavaScript之间的交互通讯。经由过程ScriptEngine.addExtension,Java对象能够被表露给JavaScript,而对应的Java可使用ScriptEngine.executeScript来挪用JavaScript。
WindowsPhone7:在WindowsPhone7中,JavaScript经由过程window.external.Notify能够将信息发送给当地代码。而响应的,WebBrowser.InvokeScript同意当地代码挪用JavaScript。【注:本节中次要内容基于博客:http://nullisnotanobject.com/phonegap-native-bridge】。
小结
PhoneGap为利用Web手艺开辟者翻开了一扇新的年夜门,HTML、JavaScript和CSS成为跨平台挪动使用开辟中的一级言语。
更主要的是,PhoneGap延展了扫瞄器功效,供应了一个基础框架来完成扫瞄器自己没有供应的功效。乃至经由过程PhoneGap,我们能够把那些JavaScript没法承当的义务移交给当地代码完成,以告竣更好的功能。这类面向跨平台挪动使用的夹杂编程形式(Web手艺+当地代码)可以供应更高效的开辟速率和更高功能的使用。
作者董龙飞,Adobe公司开辟者传教士,次要研讨偏向为前端手艺和挪动使用开辟。
掌握上面的内容差不多就能写个APP了最好的学习方法就是边写边学自己构想一个小的APP在做的时候遇到问题去找找资料我觉得这样学习比较快也比较扎实下面这些库都是有专门功能的库 |
|