Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
关于PhoneGap你应该知道的12件事 (12 things you should know...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
dong
March 02, 2012
Technology
420
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
关于PhoneGap你应该知道的12件事 (12 things you should know about PhoneGap)
在w3ctech上的演讲稿,介绍了PhoneGap的基本概念,用法,打包,插件的开发,以Android为例介绍了PhoneGap的内部机制,以及如何调试PhoneGap应用。
dong
March 02, 2012
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
生成 AI 実践ガイド (概略版) AIガバナンス編
asei
0
120
IaC コードを資産へ:AWS CDK 社内ライブラリと横断展開 / aws-summit-japan-2026
gotok365
5
1k
【Cyber-sec+】経営層を"動かす"ための考え方
hssh2_bin
0
200
2026TECHFRESH畢業分享會 - Lightning Talk - 打造精準高效的 MCP 設計模式與測試實務
line_developers_tw
PRO
0
1.3k
LayerX コーポレートエンジニアリング室におけるサプライチェーンセキュリティへの取り組み / Supply Chain Security at LayerX Corporate Engineering
yuyatakeyama
2
680
入門!AWS Blocks
ysuzuki
1
160
AIAU_UMEMOGU_ninomiya_slide
ninomiya_ii
0
240
コミュニティの有益性 ~JAWS Days 2026 での体験を通して~ / The Benefits of a Community ~Through My Experience at JAWS Days 2026~
seike460
PRO
0
180
自分が詳しくない領域でAIを使う #プロヒス2026
konifar
13
5.1k
気軽に使える"情報のハブ"としてのNotion活用 〜フロー情報の集積点 と、 Claude Code × Notion AI〜
syucream
1
150
AIネイティブな開発のサプライチェーンリスク対策 〜激動の開発現場でリスクに立ち向かう〜【ZennFes】
cscengineer
PRO
2
140
Kubernetesにおける学習基盤とLLMOpsの概要
ry
1
320
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Building the Perfect Custom Keyboard
takai
2
800
Scaling GitHub
holman
464
140k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Writing Fast Ruby
sferik
630
63k
First, design no harm
axbom
PRO
2
1.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
160
WENDY [Excerpt]
tessaabrams
11
38k
[SF Ruby Conf 2025] Rails X
palkan
2
1.1k
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