±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁËÒÆ¶¯AppÀàÐͼ°ÆäÓÅȱµã£¬Òƶ¯AppÀàÐͼ°ÆäÓÅȱµã£¬ÒÔ¼°Cordovaƽ̨»·¾³ÅäÖõÈÏà¹ØÄÚÈÝ¡£
±¾ÎÄÀ´×ÔÓÚcnblogs£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£ |
|
Ò»¡¢Òƶ¯AppÀàÐͼ°ÆäÓÅȱµã 1.1 Native App

Native App£¨ÔÉúApp£©ÊÇÓÃÔÉúÓïÑÔ£¨Object-C/Java/C#/....£©¿ª·¢£¬Óû§ÐèÒªÏÂÔØ°²×°µÄÊÖ»úÓ¦Óá£
ÓŵãÊÇ ¿ÉÒÔÍêÈ«ÀûÓÃϵͳµÄ API ºÍÆ½Ì¨ÌØÐÔ£¬ÔÚÐÔÄÜÉÏÒ²ÊÇ×îºÃµÄ¡£
ȱµãÊÇ ÓÉÓÚ¿ª·¢¼¼Êõ²»Í¬£¬Èç¹ûÄãÒª¸²¸Ç¶à¸öƽ̨£¬ÔòÒªÕë¶Ôÿ¸öƽ̨¶ÀÁ¢¿ª·¢£¬ÎÞ¿çÆ½Ì¨ÌØÐÔ¡£
1.2 Web App

Web AppÖ÷ÒªÊDzÉÓÃͳһµÄ±ê×¼µÄHTML¡¢JavaScriptÓëCSS µÈ Web ¼¼Êõ¿ª·¢¡£
ÓŵãÊÇ Óû§ÎÞÐèÏÂÔØ£¬Í¨¹ý²»Í¬Æ½Ì¨µÄä¯ÀÀÆ÷·ÃÎʼ´¿ÉʵÏÖ¿çÆ½Ì¨£¬Í¬Ê±¿ÉÒÔͨ¹ýä¯ÀÀÆ÷Ö§³Ö³ä·ÖʹÓÃ
HTML5 ÌØÐÔ¡£
ȱµãÊÇ ÕâЩ»ùÓÚä¯ÀÀÆ÷µÄÓ¦ÓÃÎÞ·¨µ÷ÓÃϵͳ API À´ÊµÏÖһЩ¸ß¼¶¹¦ÄÜ£¨ÀýÈçÅÄÕÕ¡¢GPS¡¢´æ´¢µÈ£©£¬Ò²²»ÊʺϸßÐÔÄÜÒªÇóµÄ³¡ºÏ¡£
1.3 Hybrid App

Hybrid App£¨»ìºÏʽApp£©ÖкÍÁËNative AppºÍWeb App¸÷×ÔµÄÓÅÊÆ¡£ ÎÒÃÇ¿ÉÒÔÓÃ
HTML + CSS + JS ¿ª·¢£¬¼æÈݶà¸öƽ̨¡£Óû§Ò²ÒªÏÂÔØ°²×°£¬²¢Äܵ÷ÓÃÊÖ»úµÄÉãÏñÍ·¡¢Í¨Ñ¶Â¼µÈ¹¦ÄÜ£¬
Hybrid AppµÄ¾²Ì¬×ÊÔ´Ò²ÔÚÊÖ»ú±¾µØ¡£
ÓŵãÊÇ ÏàͬµÄ´úÂëÖ»ÐèÕë¶Ô²»Í¬Æ½Ì¨½øÐбàÒë¾ÍÄÜʵÏÖÔÚ¶àÆ½Ì¨µÄ·Ö·¢£¬´ó´óÌá¸ßÁË¶àÆ½Ì¨¿ª·¢µÄЧÂÊ£»¶øÏà½ÏÓÚ
Web App£¬¿ª·¢Õß¿ÉÒÔͨ¹ý°ü×°ºÃµÄ½Ó¿Ú£¬µ÷ÓÃ´ó ²¿·Ö³£ÓõÄϵͳ API¡£
¶þ¡¢Hybird App¿ª·¢Æ½Ì¨½éÉÜ 2.1 PhoneGap

PhoneGapÊÇÒ»¸öÓûùÓÚHTML£¬CSSºÍJavaScriptµÄ£¬´´½¨Òƶ¯¿çÆ½Ì¨ÒÆ¶¯Ó¦ÓóÌÐòµÄ¿ìËÙ¿ª·¢Æ½Ì¨¡£Ëüʹ¿ª·¢ÕßÄܹ»ÀûÓÃiPhone£¬Android£¬Palm£¬Symbian£¬WP7£¬WP8£¬BadaºÍBlackberryÖÇÄÜÊÖ»úµÄºËÐŦÄÜ¡ª¡ª°üÀ¨µØÀí¶¨Î»£¬¼ÓËÙÆ÷£¬ÁªÏµÈË£¬ÉùÒôºÍÕñ¶¯µÈ£¬´ËÍâPhoneGapÓµÓзḻµÄ²å¼þ£¬¿ÉÒÔµ÷Óá£
Òµ½çºÜ¶àÖ÷Á÷µÄÒÆ¶¯¿ª·¢¿ò¼Ü¾ùÔ´ÓÚPhoneGap¡£½ÏÖøÃûµÄÓÐWorklight¡¢appMobi¡¢WeX5µÈ£»ÆäÖÐWeX5Ϊ¹úÄÚ´òÔ죬ÍêÈ«Apache¿ªÔ´£¬ÔÚÈÚºÏPhonegapµÄ»ù´¡ÉÏ£¬×öÁËÉî¶ÈÓÅ»¯£¬¾ß±¸½Ó½üNative
appµÄÐÔÄÜ£¬Í¬Ê±¿ª·¢±ã½ÝÐÔÒ²½ÏºÃ¡£ 2.2 Cordova

CordovaÊǹ±Ï׸øApacheºóµÄ¿ªÔ´ÏîÄ¿£¬ÊÇ´ÓPhoneGapÖгé³öµÄºËÐÄ´úÂ룬ÊÇÇý¶¯PhoneGapµÄºËÐÄÒýÇæ¡£Äã¿ÉÒÔ°ÑËüÃǵĹØÏµÏëÏó³ÉÀàËÆÓÚWebkitºÍGoogle
ChromeµÄ¹ØÏµ¡£
CordovaÌṩÁËÒ»×éÉ豸Ïà¹ØµÄAPI£¬Í¨¹ýÕâ×éAPI£¬Òƶ¯Ó¦ÓÃÄܹ»ÒÔJavaScript·ÃÎÊÔÉúµÄÉ豸¹¦ÄÜ£¬ÈçÉãÏñÍ·¡¢Âó¿Ë·çµÈ¡£
Cordova»¹ÌṩÁËÒ»×éͳһµÄJavaScriptÀà¿â£¬ÒÔ¼°ÎªÕâЩÀà¿âËùÓõÄÉ豸Ïà¹ØµÄÔÉúºǫ́´úÂë¡£
CordovaÖ§³ÖÈçÏÂÒÆ¶¯²Ù×÷ϵͳ£ºiOS, Android,ubuntu phone os,
Blackberry, Windows Phone, Palm WebOS, Bada ºÍ Symbian¡£
2.3 Hybrid App³ÌÐò½á¹¹ ΪÁËÁ˽âÇå³þHybrid AppµÄ³ÌÐò½á¹¹£¬ÎÒÃÇÏÈÀ´¸´Ï°Ò»ÏÂÆÕͨµÄASP.NET WebÍøÕ¾Ó¦ÓõĽṹ£º

×îµ×²ãµ±È»ÊÇCLRÌṩµÄÔËÐÐʱ»·¾³£¬ÕâÊÇËùÓÐ.NETÓ¦ÓóÌÐò¶¼±ØÐëÀµÒÔÉú´æµÄÌõ¼þ¡£ÔÚCLRÖ®ÉÏÊÇ.NET
FrameworkÌṩµÄһЩ»ùÀà¿âBCL£¬°üÀ¨ÁËIO¡¢String¡¢ThreadµÈ³£ÓõÄÀàÐÍ¡£ÔÚBCLÖ®ÉÏÊÇһЩ³£ÓõÄFramework£¬ÀýÈçB/SģʽµÄASP.NET
WebFormºÍASP.NET MVC£¬C/SģʽµÄWindows Form»òWPFµÈ¡£×îÉϲã²ÅÊÇÎÒÃǵÃÓ¦ÓóÌÐò£¬ËüÊÇ»ùÓÚÏÂÃæµÄ»ù´¡»·¾³À´¹¹½¨µÄ£¬Ò»²ã½ÓÒ»²ã£¬Ã¿Ò»²ã¶¼¶ÔϲãÓÐÒÀÀµ¡£
ÏÖÔÚÎÒÃÇÔÙÀ´¿´ÏÂÃæÒ»ÕÅͼ£¬ËüչʾÁËÒ»¸öHybird AppµÄ½á¹¹£º

ÓëWebÍøÕ¾½á¹¹Í¼Ïà¶ÔÓ¦£¬Hybrid App½á¹¹Í¼µÄ×îµ×²ãÊÇNative Code£¨±¾µØ´úÂ룩£¬ÕâÀïÁоÙÁËÈýÖÖÖ÷Òª²Ù×÷ϵͳiOS¡¢AndroidÒÔ¼°Windows
PhoneµÄ¶ÔÓ¦¿ª·¢ÓïÑÔObject-C¡¢JavaºÍC#£¬ÔÚNative AppµÄ¿ª·¢ÖÐÎÒÃÇÖ±½ÓʹÓÃÕ⼸ÖÖÓïÑÔ¿ª·¢¶ÔÓ¦²Ù×÷ϵͳµÄApp¡£ÔÚNative
CodeÖ®ÉϵÄÊÇCordova/PhoneGapÕâÑùµÄƽ̨£¬ÕâЩƽ̨ÌṩÁËJavaScriptÖ´ÐÐÆ½Ì¨ºÍNative
API£¬Éϲãͨ¹ý´«µÝJS´úÂ룬ÓÉJSÖ´ÐÐÆ½Ì¨½øÐнâÊÍ£¬ÔÙµ÷ÓöÔÓ¦µÄNative API£¬ÓÉNative
APIÈ¥µ÷ÓöÔÓ¦²Ù×÷ϵͳµÄNative Code¡£»»¾ä»°Ëµ£¬Cordova/PhoneGapÕâÒ»²ãËù×öµÄ¾ÍÊǶÔNative
Code²ãÃæµÄ°ü×°¡£ÔÚÆ½Ì¨²ãÖ®ÉÏÊÇһЩPlugins£¨²å¼þ£©£¬ËüÊÇÒ»¶ÑÊÖ»úµÄÓ²¼þ×é¼þ½Ó¿Ú£¬¿ÉÒÔ·½±ãµØÊ¹ÓÃJS´úÂëµ÷ÓÃÏà»ú¡¢Îļþ¡¢ÍøÂçµÈÓ²¼þ×ÊÔ´¡£×îÉϲãÊÇһЩWebǰ¶ËµÄչʾ²ã¿ò¼Ü£¬½èÖúÕâЩ¿ò¼Ü¿ÉÒÔ·½±ãµØ¿ª·¢³öÊʺÏHybird
AppµÄWebÒ³Ãæ¡£
Ò»¸öµäÐ͵ÄHybrid AppµÄµ÷ÓÃÊÖ»úÓ²¼þµÄCameraÏà»ú¹¦ÄܵIJã´Î˳ÐòÈçÏÂͼËùʾ£º

Èý¡¢Cordovaƽ̨»·¾³ÅäÖà 3.1 ÅäÖÃJDK»·¾³
ÏÂÔØµØÖ·
°²×°jdk-8u71-windows-x64.exe£¬ÅäÖû·¾³±äÁ¿£º
AVA_HOME = C:\Program
Files\Java\jdk1.8.0_71
Path += %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
CLASSPATH += %JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; |
ÑéÖ¤£ºjava -version

3.2 ÅäÖÃAndroid-SDK»·¾³
ÏÂÔØµØÖ·1
ÏÂÔØµØÖ·2£¨Í¨¹ýAndroid Studio°²×°Android SDK£©£º
½âѹandroid-sdk.rarµ½D:\Develop\Android\sdk£¬ÅäÖû·¾³±äÁ¿£º
ADT_HOME =
D:\Develop\Android\sdk
Path += %ADT_HOME%\platform-tools;%ADT_HOME%\tools; |
ÑéÖ¤£ºadb -version

3.3 ÅäÖÃApache-Ant»·¾³
ÏÂÔØµØÖ·
½âѹapache-ant-1.9.6.rar£¬ÅäÖû·¾³±äÁ¿£º
ANT_HOME =
D:\Develop\ApacheAnt
Path += %ANT_HOME%\bin; |
ÑéÖ¤£ºant -versioin

3.4 ÅäÖÃGIT»·¾³ ÏÂÔØµØÖ·
°²×°Git_V2.5.1_64_bit_setup.1441791170.exe£¬ÅäÖû·¾³±äÁ¿£º
GIT_HOME =
C:\Program Files\Git
Path += %GIT_HOME%\bin; |
ÑéÖ¤£ºgit --version

3.5 ÅäÖÃNode»·¾³ ÏÂÔØµØÖ·
°²×°node-v0.10.29-x64.msi£¬ÅäÖû·¾³±äÁ¿£º
NODE_HOME
= C:\Program Files\Nodejs\
Path += %NODE_HOME%; |
ÑéÖ¤£ºnode -v,npm -v

3.6 ÅäÖÃCordova»·¾³ ÔÚcmdÖÐÔËÐÐnpm install -g cordova£¨ÔÚÏß°²×°£©
»òÕß½«cordova.rar½âѹµ½C:\Users\YourName\AppData\Roaming\npm\node_modules

PS£ºcordova×îа汾ƥÅäandroid 6.0£¬Òò´ËÄãµÄAndroid SDKÒ²ÒªÏÂÔØ6.0µÄ°ü£¬Èç¹ûÄãÖ»ÓÐ5.xµÄ£¬ÄÇô¿ÉÒÔÖ¸¶¨cordovaµÄ°æ±¾½øÐа²×°£¬ÀýÈç°²×°cordova
5.1.1 £ºnpm install -g cordova@5.1.1¡¡¡¡
ËÄ¡¢µÚÒ»¸öÒÆ¶¯App£º¼òµ¥µÇ¼Demo 4.1 ¿ª·¢Á÷³Ì¸ÅÊö Ê×ÏÈ£¬Ê¹ÓÃVisual Studio»òSublime TextµÈIDE¿ª·¢WebÍøÒ³£¬È»ºóʹÓÃCordovaƽ̨½øÐдò°üÉú³ÉAndroidÏîÄ¿Îļþ£¬×îºóµ÷ÕûÅäÖÃÎļþºÍ·¢²¼³Éapk¡£
4.2 ʹÓÃVisual Studio¿ª·¢WebÍøÕ¾ ÕâÀïÖ»¿ª·¢Ò»¸ö¼òµ¥µÄloginÒ³Ãæ£¬Òò´ËÖ»ÓÐÒ»¸öHTMLÎļþ£ºlogin.html£¬½èÖúÓÚbootstrapºÍzeptojs¡£login.htmlµÄ´úÂëÈçÏ£º
<!DOCTYPE
html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8"
/>
<title>MyHybirdApp</title>
<link href="assets/lib/bootstrap/css/bootstrap.min.css"
rel="stylesheet" />
<link href="assets/css/style.css"
rel="stylesheet" />
</head>
<body>
<!-- ±íµ¥ÇøÓò -->
<form id="form_login" class="form-main"
method="post" autocomplete="off">
<h2>Sign in</h2>
<hr />
<div class="avator">
<img id="myavator" src="assets/img/avatar.png"
/>
</div>
<div class="message-box"></div>
<label for="username" class="sr-only">Username</label>
<input id="username" type="text"
class="form-control input-lg input-group-top"
placeholder="Input your Username"
required autofocus>
<label for="password" class="sr-only">Password</label>
<input id="password" type="password"
class="form-control input-lg input-group-bottom"
placeholder="Input your Password"
required>
<div class="checkbox">
<input id="remember" type="checkbox"
value="remember-me" checked>
<label for="remember">Remember
me</label>
<a class="link" href="register.html">Sign
up</a>
</div>
<input type="hidden" name="redirect"
value="/" />
<button id="btn_login" class="btn
btn-lg btn-info btn-block">Sign in</button>
</form>
<!-- ½Å±¾ÇøÓò -->
<script type="text/javascript"
src="assets/lib/zepto/zepto.min.js"></script>
<script type="text/javascript"
src="cordova.js"></script>
<script type="text/javascript">
$(function () {
// µ÷ÓÃÊÖ»úÓ²¼þÅÄÕÕ
$('#myavator').on('click', function () {
navigator.camera.getPicture(onSuccess, onFail,
{
quality: 50,
destinationType: Camera.DestinationType.DATA_URL
});
function onSuccess(imageData) {
var image = document.getElementById('myavator');
image.src = "data:image/jpeg;base64,"
+ imageData;
}
function onFail(message) {
alert('Failed because: ' + message);
}
});
// ·ÃÎÊ·þÎñ¶Ë·þÎñ
$('#btn_login').on('click', function () {
var userName = $('#username').val();
var password = $('#password').val();
if (userName == "") {
alert('Please input your user name!');
}
else if (password == "") {
alert('Please input your password!');
}
else {
// ÔÚPCä¯ÀÀÆ÷¶ËµÄ»°ÏÂÃæµÄajaxÇëÇó¾ÍÉæ¼°µ½¿çÓò£¬¶øÔÚCordovaÖÐÎÒÃDz»ÐèÒª¿¼ÂÇôôßÕ
$.get('http://www.edisonchou.cn/AccountHandler.ashx?action
=Login&username=' + userName + '&password='
+ password + '', {
}, function (data) {
alert(data.Message);
});
}
return false;
});
});
</script>
</body>
</html> |
ÕâÀïÐèҪעÒâµÄÓÐÒÔϼ¸µã£º
£¨1£©·ÃÎÊ·þÎñ¶ËµÄ·þÎñ
// ·ÃÎÊ·þÎñ¶Ë·þÎñ
$('#btn_login').on('click', function () {
var userName = $('#username').val();
var password = $('#password').val();
if (userName == "") {
alert('Please input your user name!');
}
else if (password == "") {
alert('Please input your password!');
}
else {
// ÔÚPCä¯ÀÀÆ÷¶ËµÄ»°ÏÂÃæµÄajaxÇëÇó¾ÍÉæ¼°µ½¿çÓò £¬¶øÔÚCordovaÖÐÎÒÃDz»ÐèÒª¿¼ÂÇôôßÕ
$.get('http://www.edisonchou.cn/AccountHandler.ashx?action =Login&username='
+ userName + '&password=' + password + '',
{
}, function (data) {
alert(data.Message);
});
}
return false;
}); |
ÎÒÃÇÖªµÀÔÚ´«Í³PC ä¯ÀÀÆ÷¶ËÖУ¬ajaxÇëÇóÊÜÏÞÓÚXMLHttpRequestÎÞ·¨½øÐпçÓòÇëÇó£¬ÎÒÃÇ¿ÉÄÜÐèÒª½èÖúJSONPÒ»ÀàµÄ°ïÊÖ°ïÎÒÃǽâ¾ö£¬¶øÔÚCordovaÉú³ÉµÄHybird
AppÖв»ÐèÒª¿¼ÂÇÕâ¸öÎÊÌâ¡£ÔÚÉÏÃæµÄ´úÂëÖУ¬getÇëÇó·ÃÎʵÄÊÇÒ»¸öλÓÚÔ¶¶Ë·þÎñÆ÷ÖеÄÒ»¸ö·þÎñ£¨¿ÉÒÔÊÇashxÒ»°ã´¦Àí³ÌÐò£¬Ò²¿ÉÒÔÊÇÒ»¸öMVCÓ¦ÓõÄaction£©¡£
£¨2£©·ÃÎÊAndroidÊÖ»úµÄÓ²¼þ
// µ÷ÓÃÊÖ»úÓ²¼þÅÄÕÕ
$('#myavator').on('click', function () {
navigator.camera.getPicture(onSuccess, onFail,
{
quality: 50,
destinationType: Camera.DestinationType.DATA_URL
});
function onSuccess(imageData) {
var image = document.getElementById('myavator');
image.src = "data:image/jpeg;base64,"
+ imageData;
}
function onFail(message) {
alert('Failed because: ' + message);
}
}); |
²Î¿¼CordovaµÄAPIÎĵµ£¬ÎÒÃÇ¿ÉÒÔͨ¹ýÈçÉÏËùʾµÄJS´úÂë·ÃÎÊCameraÏà»ú£¬²¢µ÷ÓÃÏà»ú½øÐÐÅÄÕÕ¡£Á½¸öʼþonSuccessºÍOnFailÔòÊÇÅÄÕճɹ¦»òʧ°ÜºóµÄ´¦ÀíÂß¼¡£ÕâÀï³É¹¦ºó£¬ÎÒÃǽ«ÐÂÅĵÄÕÕÆ¬·Åµ½Í·ÏñImageλÖá£
ÁíÍ⣬ÎÒÃÇ»¹ÐèÒªÒ»¸ö·þÎñ¶Ë£¬ÌṩµÇ¼ÑéÖ¤µÄ½Ó¿Ú¹©App¿Í»§¶Ëµ÷Óã¬ÕâÀïÎÒÃǼòµ¥µØ×öÒ»¸öashxÒ»°ã´¦Àí³ÌÐòÀ´½øÐд¦Àí£¬²¢½«Æä·¢²¼µ½°¢ÀïÔÆµÄÐéÄâ»úÖÐÒÔ±ãÊÖ»ú¿ÉÒÔËæÊ±·ÃÎÊ£¬Æä´¦ÀíÂß¼´úÂëÈçÏ£º
public class
AccountHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
if (string.IsNullOrEmpty(context.Request["action"]))
{
return;
}
string action = context.Request["action"];
JsonObject jsonObject = new JsonObject();
switch (action)
{
case "Login":
string userName = context.Request["username"];
string password = context.Request["password"];
jsonObject.UserId = userName;
bool result = CheckAccount(userName, password);
if (result)
{
jsonObject.Message = "Success";
}
else
{
jsonObject.Message = "Failed";
}
JavaScriptSerializer serializer = new JavaScriptSerializer();
string jsonResult = serializer.Serialize(jsonObject);
context.Response.ContentType = "application/json";
context.Response.Write(jsonResult);
break;
}
}
private bool CheckAccount (string userName,
string password)
{
bool result = false;
List<Account> accountList = GetAccountList();
foreach (var account in accountList)
{
if (account.UserName.Equals(userName) &&
account.Password.Equals(password))
{
result = true;
}
}
return result;
}
private List<Account> GetAccountList()
{
return new List<Account>()
{
new Account() { UserName="edisonchou", Password="123456"
},
new Account() { UserName="zhouxulong", Password="654321"}
};
}
public bool IsReusable
{
get
{
return false;
}
}
} |
ÕâÀïûÓнøÐÐÊý¾Ý¿âµÄ²Ù×÷£¬¶øÊǼòµ¥µÃÄ£ÄâÁËÒ»¸öº¬ÓÐÁ½ÌõÓû§ÐÅÏ¢µÄList¼¯ºÏ¡£
4.3 ʹÓÃCordova´ò°üapkÎļþ 1.н¨Ò»¸öÏîÄ¿Îļþ¼Ð
ÓÐÁËWebÍøÕ¾£¬ÎÒÃÇ¿ÉÒÔ½øÐÐAppµÄ×¼±¸¹¤×÷ÁË£¬Ê×ÏÈн¨Ò»¸öCordovaÏîÄ¿Îļþ¼Ð£º

ÕâÀïÎÒÃǸøappÈ¡ÃûΪԼÂð£¬PS£º½ñÌìÇéÈ˽ڣ¬ÄãÔ¼ÁËÂð£¿
È»ºó½«wwwÎļþÀïÃæµÄÄÚÈÝÈ«²¿É¾³ý£¬½«ÎÒÃÇ¿ª·¢µÄwebÍøÒ³ÒÔ¼°ÒÀÀµµÄ×ÊÔ´£¨Í¼Æ¬¡¢css¡¢jsµÈ£©¿½±´µ½´ËĿ¼Ï£º

2.Ôö¼Óandroid platformÖ§³Ö
ÓÐÁËÒ»¸öCordovaµÄÏîÄ¿Îļþ¼Ð£¬ÎÒÃÇÐèÒªÔö¼ÓÒ»¸öandroidµÄplatform£¬ÒòΪÎÒÃÇÒª×öµÄÊÇÒ»¸ö»ùÓÚandroidµÄapp¡£½øÈëyuemaÎļþ¼Ð£¬È»ºóÊäÈëÒÔÏÂÃüÁ

3.Ôö¼Óandroid pluginÖ§³Ö
ÓÉÓÚÎÒÃǵÄappʹÓÃÁËÓ²¼þ£¬ËùÒÔÐèÒªÔö¼ÓÕë¶ÔÏà¶ÔÓ¦Ó²¼þµÄpluginÖ§³Ö£¬Ç°ÃæÌáµ½ÎÒÃÇÐèÒªµ÷ÓöÔÓ¦µÄplugin£¬ÓÉpluginÈ¥µ÷ÓÃJS½âÊÍÆ÷Éú³É¶ÔÓ¦Native
API¡£ÕâÀïÎÒÃÇÔö¼ÓcameraµÄplugin£º

4.4 µ÷ÕûÅäÖÃÎļþºÍ·¢²¼Ó¦Óà ÔÚcordovaÉú³ÉµÄÏîÄ¿Îļþ¼ÐÖУ¬×î¶¥²ãÓÐÒ»¸öconfig.xml£¬Õâ¸ö¾ÍÊÇÎÒÃÇÐèÒª±à¼µÄÅäÖÃÎļþ¡£
1.ÉèÖÃappµÄÆðÊ¼Ò³Ãæ
<!-- Ó¦ÓóÌÐòÈë¿Ú
-->
<content src="login.html" />
|
2.ÉèÖÃappµÄIconÒÔ¼°SplashScreen
<!-- Õë¶Ô²»Í¬Æ½Ì¨µ¥¶ÀµÄÉèÖÃÑ¡Ïî
-->
<platform name="android">
<allow-intent href="market:*" />
<!-- app icon image -->
<icon src="www/assets/img/avatar.png"
density="ldpi" />
<icon src="www/assets/img/avatar.png"
density="mdpi" />
<icon src="www/assets/img/avatar.png"
density="hdpi" />
<icon src="www/assets/img/avatar.png"
density="xdpi" />
<!-- splash screen image -->
<splash src="www/assets/img/splashscreen.png"
density="land-hdpi" />
<splash src="www/assets/img/splashscreen.png"
density="land-ldpi" />
<splash src="www/assets/img/splashscreen.png"
density="land-mdpi" />
<splash src="www/assets/img/splashscreen.png"
density="land-xdpi" />
<splash src="www/assets/img/splashscreen.png"
density="port-hdpi" />
<splash src="www/assets/img/splashscreen.png"
density="port-ldpi" />
<splash src="www/assets/img/splashscreen.png"
density="port-mdpi" />
<splash src="www/assets/img/splashscreen.png"
density="port-xdpi" />
</platform> |
ÍêÕûµÄconfig.xmlÈçÏ£º
<?xml version='1.0'
encoding='utf-8'?>
<widget id="cn.edisonchou.app"
version="0.0.1" xmlns="http://www.w3.org/ns/widgets"
xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>Ô¼Âð</name>
<description>
Edison ChouµÄµÚÒ»¸öCordovaÓ¦ÓÃ.
</description>
<author email="edisonchou@hotmail.com"
href="http://www.edisonchou.cn">
Edison Chou
</author>
<!-- Ó¦ÓóÌÐòÈë¿Ú -->
<content src="login.html" />
<!-- ²å¼þÒÀÀµÏî -->
<plugin name="cordova-plugin-whitelist"
version="1" />
<!-- ÍøÂçÀàÐÍÅäÖà *´ú±íËùÓеØÖ·¾ù¿É·ÃÎÊ-->
<access origin="*" />
<allow-intent href="http://*/*"
/>
<allow-intent href="https://*/*"
/>
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<!-- Õë¶Ô²»Í¬Æ½Ì¨µ¥¶ÀµÄÉèÖÃÑ¡Ïî -->
<platform name="android">
<allow-intent href="market:*" />
<!-- app icon image -->
<icon src="www/assets/img/avatar.png"
density="ldpi" />
<icon src="www/assets/img/avatar.png"
density="mdpi" />
<icon src="www/assets/img/avatar.png"
density="hdpi" />
<icon src="www/assets/img/avatar.png"
density="xdpi" />
<!-- splash screen image -->
<splash src="www/assets/img/splashscreen.png"
density="land-hdpi" />
<splash src="www/assets/img/splashscreen.png"
density="land-ldpi" />
<splash src="www/assets/img/splashscreen.png"
density="land-mdpi" />
<splash src="www/assets/img/splashscreen.png"
density="land-xdpi" />
<splash src="www/assets/img/splashscreen.png"
density="port-hdpi" />
<splash src="www/assets/img/splashscreen.png"
density="port-ldpi" />
<splash src="www/assets/img/splashscreen.png"
density="port-mdpi" />
<splash src="www/assets/img/splashscreen.png"
density="port-xdpi" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*"
/>
</platform>
</widget> |
3.±àÒë·¢²¼app³ÉapkÎļþ
ͨ¹ýÃüÁcordova build android À´Éú³É×îºóµÄapkÎļþ


Éú³ÉµÄapkÎļþλÓÚ£ºYourDirectory\yuema\platforms\android\build\outputs\apk
ÖÐ

4.5 Ô¤ÀÀÎÒÃǵÄapp ½«Éú³ÉµÄapk·Åµ½ÎÒÃǵÃandroidÊÖ»úÖв¢½øÐа²×°£¬È»ºóµã»÷½øÈ룬ÏÂÃæÊÇÑÝʾͼƬ£¨ÑÝʾÊÖ»ú£ºSmartisan
T1£©¡£
£¨1£©°²×°app

£¨2£©µã»÷½øÈëµÇÂ¼Ò³Ãæ

ÒÔÏÂÁ½¸ögifͼƬÊÜÏÞÓÚgifÖÆ×÷Èí¼þ£¬Ð§¹û½Ï²î£¬µ«Êǹ¦ÄÜÒѾÑÝʾÁ˳öÀ´£º
£¨3£©µ÷Ó÷þÎñ¶Ë½øÐÐÑéÖ¤

£¨4£©µ÷ÓÃÏà»ú½øÐÐÅÄÕÕ

¸½¼þÏÂÔØ
1.Õû¸öÏîÄ¿µÄÔ´´úÂë
2.Éú³ÉºóµÄapkÎļþ
|