Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
关于PhoneGap你应该知道的12件事 (12 things you should know...
Search
dong
March 02, 2012
Technology
2
410
关于PhoneGap你应该知道的12件事 (12 things you should know about PhoneGap)
在w3ctech上的演讲稿,介绍了PhoneGap的基本概念,用法,打包,插件的开发,以Android为例介绍了PhoneGap的内部机制,以及如何调试PhoneGap应用。
dong
March 02, 2012
Tweet
Share
More Decks by dong
See All by dong
CSS Backgrounds and Borders规范导读
dong
0
1.7k
模块化HTML5移动应用开发:jQuery Mobile + BackboneJS+RequireJS
dong
8
5.6k
Other Decks in Technology
See All in Technology
AWSの新機能をフル活用した「re:Inventエージェント」開発秘話
minorun365
2
340
20251218_AIを活用した開発生産性向上の全社的な取り組みの進め方について / How to proceed with company-wide initiatives to improve development productivity using AI
yayoi_dd
0
610
re:Invent2025 3つの Frontier Agents を紹介 / introducing-3-frontier-agents
tomoki10
0
370
たまに起きる外部サービスの障害に備えたり備えなかったりする話
egmc
0
360
Lookerで実現するセキュアな外部データ提供
zozotech
PRO
0
190
20251203_AIxIoTビジネス共創ラボ_第4回勉強会_BP山崎.pdf
iotcomjpadmin
0
120
LayerX QA Night#1
koyaman2
0
200
AI時代のワークフロー設計〜Durable Functions / Step Functions / Strands Agents を添えて〜
yakumo
3
1.9k
Amazon Bedrock Knowledge Bases × メタデータ活用で実現する検証可能な RAG 設計
tomoaki25
6
2.1k
Knowledge Work の AI Backend
kworkdev
PRO
0
100
障害対応訓練、その前に
coconala_engineer
0
150
ソフトウェアエンジニアとAIエンジニアの役割分担についてのある事例
kworkdev
PRO
0
120
Featured
See All Featured
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
57
37k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
170
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
The Curious Case for Waylosing
cassininazir
0
190
30 Presentation Tips
portentint
PRO
1
170
sira's awesome portfolio website redesign presentation
elsirapls
0
89
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
0
240
Fireside Chat
paigeccino
41
3.8k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
1
860
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
Transcript
ܱႿ1IPOF(BQ֥ࡱ൙ Mark Dong ٦ Adobe Developer Evangelist weibo.com/donglongfei weibo.com/javascriptdev
1IPOF(BQ൞હĤ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
٠໙၍ഡСЧֹหྟ յЇ)5.-"QQ ҆ඇ֞؟ᇕ QIPOF(BQQMVHJO Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
1IPOF(BQ҂൞હĤ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
+BWB4DSJQU 'SBNFXPSL *%&5PPMT Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
ఏჷ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
! Ⴟ୍ࣸࣁ֥ J1IPOF%FW$BNQ ! oCSJEHJOHUIFHBQ CFUXFFOUIFXFCBOEUIF JQIPOF4%,p ! 1IPOF(BQJUnTMJLF"*3 GPSUIF*QIPOF
/JUPCJCMPH Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
1IPOF(BQᄝ҂֥Чֹหྟ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
षჷĤ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
$BMM#BDL ۷ູ "QBDIF$PSEPWB Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
http://incubator.apache.org/cordova/
յЇ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
ᆌؓ҂֥*%& 4%, Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
PhoneGap Build Compile in the cloud Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
٠໙Чֹۿି
None
None
હ൞1IPOF(BQ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
None
+4 /BUJWF Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
/BUJWF8FC$POUSPM 1MVHJOT ''* JavaScript/CSS/HTML5 Not Web Tech Adobe 董龙飞 weibo.com/donglongfei
weibo.com/javascriptdev
/BUJWF8FC$POUSPM #SPXTFSğGVMMGVODUJPOT $ISPNFSFNPWFE /PUPQCBS
''* 'PSFJHO'VODUJPO*OUFSGBDF Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
/BUJWF8FC7JFX 1IPOF(BQ1MVHJOT .PCJMF04 /BUJWF"1* )BSEXBSF Ԯۋఖ ྙԩ ຩ
l 8FC"QQ +BWB4DSJQU $44 )5.- FFI 浏览器 OS API OS API 1IPOF(BQ"QQ
1IPOF(BQࡏܒ .PCJMF04 8FC"QQ )5.- +BWB4DSJQU $44 /BUJWF8FC7JFX 8FC7JFXa6*8FC7JFXl
1IPOF(BQ1MVHJOT ജཞ ᄎԮۋఖ ᆷଲᆌ ഡСྐ༏ (14 ๙ᆩ ຩሑ l קᇅQMVHJO HTML5 API PhoneGap JS API OS API OS API PhoneGap Native API
/BUJWF8FC$POUSPM ಆۿିᛍফఖ ીႵшॿ
public class CirclesActivity extends DroidGap { @Override public void onCreate(Bundle
savedInstanceState) { super.onCreate(savedInstanceState); super.loadUrl("file:///android_asset/ www/circles.html"); } } /BUJWF8SBQQFSXJUI1IPOF(BQ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
QMVHJO
)5.-ཛଢ QIPOFHBQKBS QMVHJOTYNM "OESPJE.BOJGFTUYNM BOESPJEBDUJWJUZ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
In Java
public class callsPGPlugin extends Plugin { // List Actions public
static nal String ACTION="list"; @Override public PluginResult execute(String action, JSONArray data, String callbackId) { PluginResult result=null; if(ACTION.equals(action)){ CallLogAI callLogAI = new CallLogAI(ctx); JSONObject callsHistory=callLogAI.fetchCallLogs(null); Log.d("RESULT=", callsHistory.toString()); result=new PluginResult(Status.OK,callsHistory); }else{ result=new PluginResult(Status.INVALID_ACTION); Log.d("CallsPlugin","Invalidate action:" + action); } return result; } } Javaקᇅplugin Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
ᇿҨplugin <?xml version="1.0" encoding="UTF-8"?> <plugins> <plugin name="App" value="com.phonegap.App"/> <plugin name="Geolocation"
value="com.phonegap.GeoBroker"/> <plugin name="Device" value="com.phonegap.Device"/> …… <plugin name="Temperature" value="com.phonegap.TempListener"/> <plugin name="FileTransfer" value="com.phonegap.FileTransfer"/> <plugin name="Capture" value="com.phonegap.Capture"/> <plugin name="CallsHistoryPlugin" value="com.mark.phonegap.plugin.callsPGPlugin" /> </plugins> Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
In JavaScript Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
+BWBTDSJQUࢤ१ var CallsListing=function(){}; CallsListing.prototype.list=function(successCallback,failureCallback){ return PhoneGap.exec(successCallback, failureCallback, 'CallsHistoryPlugin', 'list',['test'] );
}; PhoneGap.addConstructor(function(){ PhoneGap.addPlugin("callsListing",new CallsListing); });
window.plugins.callsListing.list( function(r){printResult(r)}, function(e){console.log(e)} ); ႨᆀטႨplugin +BWBTDSJQUࢤ१
ཬࢲ
window.plugins.callsListing.list( function(r){printResult(r)}, function(e){console.log(e)} ); CallsListing.prototype.list=function(success Callback,failureCallback){ return PhoneGap.exec(successCallback, failureCallback, 'CallsHistoryPlugin',
'list',['test’]); }; public class callsPGPlugin extends Plugin { // List Actions public static nal String ACTION="list"; @Override public PluginResult execute(String action, JSONArray data, String callbackId) { <plugin name="CallsHistoryPlugin" value="com.mark.phonegap.plugin.callsPGPlu gin" />
ೂޅൌགྷ+4აЧֹ"1*֥ࢌ
"OESPJE
$BMMCBDL4FSWFSğ9NM)UUQ3FRVFTUTFWFS 8FC$ISPN$MJFOUğonJsPrompt BEE+BWB4DSJQU*OUFSGBDF
$BMMCBDL4FSWFSğ9NM)UUQ3FRVFTUTFWFS 8FC$ISPN$MJFOUğڭۂonJsPrompt 'SPN+4UP/BUJWF 'SPN/BUJWFUP+4
CallsListing.prototype.list=function(successCallback,fai lureCallback){ return PhoneGap.exec(successCallback, failureCallback, 'CallsHistoryPlugin', 'list',['test’]); }; PhoneGap.exec =
function(success, fail, service, action, args) { … var r = prompt(JSON.stringify(args), "gap:"+JSON.stringify([service, action, callbackId, true])); … +BWBTDSJQU Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
Droidgap.java public boolean onJsPrompt(WebView view, String url, String message, String
defaultValue, JsPromptResult result) { …… String r = pluginManager.exec(service, action, callbackId, message, async); …… } Pluginmanager.java public String exec( nal String service, nal String action, nal String callbackId, nal String jsonArgs, nal boolean async) { …… cr = plugin.execute(action, args, callbackId); ctx.sendJavascript(cr.toErrorCallbackString(callbackId)); …… } +BWB
Pluginmanager.java ctx.sendJavascript(cr.toErrorCallbackString(callbackId)); $BMMCBDL4FSWFSKBWBğ9)3TFSWFS PhoneGap.Channel.join(function() { // Start listening for XHR
callbacks setTimeout(function() { if (PhoneGap.UsePolling) { PhoneGap.JSCallbackPolling(); } l +BWBTDSJQU +BWB
*04
+4֞/BUJWF֥๙ document.location = “gap://Class.method/args” /BUJWF֞+4֥๙ UIWebView.stringByEvaluatingJavaScriptFromString webView =[[UIWebView alloc] initWithFrame:webViewBounds];
ൌ২߄6*8FC7JFX Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
EFCVH
XFJOSF
8FJOSFᇂູ4FSWFSđ षؿᆀႨ$ISPNF 4BGBSJषؿ۽ऎটჹӱט ൫၍ႋႨ Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
<script src="http://192.168.1.101:8080/target/target-script-min.js#anonymous"> </script> Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
1IPOF(BQ%FCVH4FSWFS Adobe 董龙飞 weibo.com/donglongfei weibo.com/javascriptdev
ਫ਼ཌ
9 1FSGPSNBODF 8$DPNQBUJCMFđၞႨྟ $BMFOEBS .FTTBHFđ#MVFUPPUIđ"VEJP7JEFP
Mark Dong Developer Evangelist
[email protected]
weibo.com/donglongfei weibo.com/javascriptdev