{"id":1280,"date":"2022-03-02T09:22:41","date_gmt":"2022-03-02T00:22:41","guid":{"rendered":"http:\/\/mylittleforest.kr\/wordpress\/?p=1280"},"modified":"2025-01-15T11:32:43","modified_gmt":"2025-01-15T02:32:43","slug":"cordova","status":"publish","type":"post","link":"http:\/\/mylittleforest.kr\/wordpress\/blog\/2022\/03\/02\/1280\/","title":{"rendered":"Cordova"},"content":{"rendered":"\n<h2>Cordova<\/h2>\n\n\n\n<ul><li>\uc624\ud508\uc18c\uc2a4 \ud558\uc774\ube0c\ub9ac\ub4dc \uc571 \uac1c\ubc1c \ub3c4\uad6c<\/li><li>\uc6f9 \uae30\uc220\uc744 \uc774\uc6a9\ud574 \uac1c\ubc1c<\/li><li>\uc708\ub3c4\uc6b0, OS X, \ub9ac\ub205\uc2a4\uc5d0\uc11c \uc0ac\uc6a9 \uac00\ub2a5<\/li><li>\uc548\ub4dc\ub85c\uc774\ub4dc, iOS, Mac OS X, \uc708\ub3c4\uc6b0 \ub4f1 \uba40\ud2f0 \ud50c\ub7ab\ud3fc \uc9c0\uc6d0<\/li><li>\ud50c\ub7ec\uadf8\uc778\uc744 \ud1b5\ud55c \ud655\uc7a5<\/li><li>Cordova \uc758 \ud55c\uacc4<ul><li>\ub124\uc774\ud2f0\ube0c \uc571\uc5d0 \ube44\ud574 \uc131\ub2a5\uc774 \ub5a8\uc5b4\uc9d0<\/li><li>\ud50c\ub7ec\uadf8\uc778 \uac1c\ubc1c\uc758 \uc5b4\ub824\uc6c0<\/li><\/ul><\/li><\/ul>\n\n\n\n<h3>Cordova\uc758 \uc791\ub3d9\uc6d0\ub9ac<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"535\" height=\"245\" src=\"http:\/\/mylittleforest.kr\/wordpress\/wp-content\/uploads\/2022\/02\/cordoba-01.jpg\" alt=\"\" class=\"wp-image-1281\" srcset=\"http:\/\/mylittleforest.kr\/wordpress\/wp-content\/uploads\/2022\/02\/cordoba-01.jpg 535w, http:\/\/mylittleforest.kr\/wordpress\/wp-content\/uploads\/2022\/02\/cordoba-01-300x137.jpg 300w\" sizes=\"(max-width: 535px) 100vw, 535px\" \/><\/figure>\n\n\n\n<h3>Cordova \uac1c\ubc1c\ud658\uacbd<\/h3>\n\n\n\n<ul><li>NodeJS \/ Cordova<\/li><li>\ud50c\ub7ab\ud3fc \ubcc4 \uc694\uad6c\uc0ac\ud56d<ul><li>\uc548\ub4dc\ub85c\uc774\ub4dc: JDK, \uc548\ub4dc\ub85c\uc774\ub4dc SDK<\/li><\/ul><\/li><li>JDK \ub2e4\uc6b4\ub85c\ub4dc \ubc0f \uc124\uce58<ul><li><a href=\"https:\/\/www.oracle.com\/java\/technologies\/downloads\/#java8\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.oracle.com\/java\/technologies\/downloads\/#java8<\/a><\/li><\/ul><\/li><li>\uc548\ub4dc\ub85c\uc774\ub4dc \uc2a4\ud29c\ub514\uc624 \uc124\uce58<ul><li><a href=\"https:\/\/developer.android.com\/studio\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/developer.android.com\/studio<\/a><\/li><li>Android Virtual Device \uccb4\ud06c<\/li><\/ul><\/li><li>Cordova \uc124\uce58<ul><li>&gt; npm install \u2013g cordova<\/li><li>&gt; cordova &#8211;version<\/li><\/ul><\/li><li>\uc0c8 Cordova \ud504\ub85c\uc81d\ud2b8 \uc0dd\uc131<ul><li>&gt; cordova create hello com.example.hello HelloWord<\/li><li>&gt; cd hello<\/li><\/ul><\/li><li>\uc548\ub4dc\ub85c\uc774\ub4dc \uc5d0\ubbac\ub808\uc774\ud130 \uc0dd\uc131<ul><li>&gt; More Actions &gt; Virtual Device Manager &gt; Create virtual device &gt; Pixcel2 &gt; download &gt; <\/li><li>&gt; cordova platform add android@8.0.0<\/li><li>&gt; cordova run android<ul><li>Android SDK\uc758 \uacbd\ub85c\ub97c \ucc3e\uc9c0 \ubabb\ud558\ub294 \ubb38\uc81c<ul><li>ANDROID_SDK_ROOT=undefined (recommended setting)<\/li><li>&gt; More Actions &gt; SDK Manager &gt; Android SDK Location \ud655\uc778<\/li><li>set ANDROID_SDK_ROOT=C:\\Users\\user\\AppData\\Local\\Android\\Sdk<\/li><\/ul><\/li><li>Gradle \uc744 \ucc3e\uc9c0 \ubabb\ud558\ub294 \ubb38\uc81c<ul><li>Could not find an installed version of Gradle either in Android Studio, or on your system to install the gradle wrapper.<\/li><li>\ub2e4\uc6b4\ub85c\ub4dc : <a href=\"https:\/\/services.gradle.org\/distributions\/gradle-7.2-bin.zip\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/services.gradle.org\/distributions\/gradle-7.2-bin.zip<\/a><\/li><li>set PATH=%PATH%;C:\\SDK\\gradle-7.2\\bin;<\/li><\/ul><\/li><li>javac \ub97c \ucc3e\uc9c0 \ubabb\ud558\ub294 \ubb38\uc81c<ul><li>Failed to run &#8220;javac -version&#8221;, make sure that you have a JDK version 8 installed.<\/li><li>set PATH=%PATH%;C:\\SDK\\jdk1.8.0_321\\bin;<\/li><\/ul><\/li><\/ul><\/li><li>Android Emulator\uac00 \ub744\uc6cc\uc838 \uc788\ub294 \uc0c1\ud0dc\uc5d0\uc11c \uc2e4\ud589<\/li><li>\uc601\uad6c\uc801 PATH \ub4f1\ub85d : \uc124\uc815 &gt; \uc815\ubcf4 &gt; \uace0\uae09 \uc2dc\uc2a4\ud15c \uc124\uc815 &gt; \ud658\uacbd \ubcc0\uc218 &gt; \uc2dc\uc2a4\ud15c \ubcc0\uc218 &gt; path \uc5d0 \ucd94\uac00<ul><li>C:\\SDK\\gradle-7.2\\bin<\/li><li>C:\\SDK\\jdk1.8.0_321\\bin<\/li><\/ul><\/li><\/ul><\/li><\/ul>\n\n\n\n<h2>\ucf54\ub3c4\ubc14 \ud50c\ub7ec\uadf8\uc778 \uc124\uce58 \ubc0f \uc0ac\uc6a9<\/h2>\n\n\n\n<h3>Cordova \ud50c\ub7ec\uadf8\uc778 \uc124\uce58<\/h3>\n\n\n\n<h4>Cordova \ud50c\ub7ec\uadf8\uc778<\/h4>\n\n\n\n<ul><li>NodeJS \uc758 NPM \uacfc \uac19\uc774 Cordova \uc758 \uae30\ub2a5\uc744 \ud655\uc7a5<\/li><li>\uc6f9 \uc571\uc5d0\uc11c OS \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\ub824\uba74 \ud50c\ub7ec\uadf8\uc778\uc774 \ud544\uc694<\/li><li>OS \uc885\uc18d \ucf54\ub4dc\uc640 \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \uc778\ud130\ud398\uc774\uc2a4\ub85c \uc774\ub8e8\uc5b4\uc9d0<\/li><\/ul>\n\n\n\n<h4>Cordova \ud50c\ub7ec\uadf8\uc778 \uc124\uce58 \ubc0f \uc0ad\uc81c<\/h4>\n\n\n\n<ul><li>\uc124\uce58 : <br>cordova add &#8211;save {\ud50c\ub7ec\uadf8\uc778\uba85}<\/li><li>\ubaa9\ub85d \ud655\uc778 : <br>cordova plugin list<\/li><li>\uc0ad\uc81c :<br>cordova remove {\ud50c\ub7ec\uadf8\uc778\uba85}<\/li><li>\ud50c\ub7ec\uadf8\uc778 \uac80\uc0c9<br><a href=\"https:\/\/cordova.apache.org\/docs\/en\/latest\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/cordova.apache.org\/docs\/en\/latest\/<\/a><\/li><\/ul>\n\n\n\n<h3>Cordova \ubc30\ud130\ub9ac \uc0c1\ud0dc \ud50c\ub7ec\uadf8\uc778<\/h3>\n\n\n\n<ul><li>\ub514\ubc14\uc774\uc2a4\uc758 \ubc30\ud130\ub9ac \uc794\ub7c9 \ud655\uc778<ul><li>batterystatus \uc774\ubca4\ud2b8 -&gt; status.level<\/li><\/ul><\/li><li>\ub514\ubc14\uc774\uc2a4\uc758 \ucda9\uc804\uc0c1\ud0dc \ud655\uc778<ul><li>batterystatus \uc774\ubca4\ud2b8 -&gt; status.isPlugged<\/li><\/ul><\/li><li>\ub514\ubc14\uc774\uc2a4\uc758 \ubc30\ud130\ub9ac \uacbd\uace0 \ud655\uc778<ul><li>batterylow \uc774\ubca4\ud2b8<\/li><li>batterycritical \uc774\ubca4\ud2b8<\/li><\/ul><\/li><li>\ud50c\ub7ec\uadf8\uc778 \uc124\uce58<br>&gt; cordova plugin add &#8211;save cordova-plugin-battery-status<\/li><\/ul>\n\n\n\n<p>index.html<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n    &lt;body&gt;\n        &lt;div&gt;\n            &lt;span id=&quot;battery&quot;&gt;100&lt;\/span&gt;%\n        &lt;\/div&gt;\n        &lt;script src=&quot;cordova.js&quot;&gt;&lt;\/script&gt;\n        &lt;script src=&quot;js\/jquery-3.4.1.min.js&quot;&gt;&lt;\/script&gt;\n        &lt;script src=&quot;js\/index.js&quot;&gt;&lt;\/script&gt;\n    &lt;\/body&gt;\n<\/pre><\/div>\n\n\n<h3>deviceready \uc774\ubca4\ud2b8<\/h3>\n\n\n\n<ul><li>Cordova \ud50c\ub7ec\uadf8\uc778\uc774 \ubaa8\ub450 \ub85c\ub4dc \ub41c \ud6c4 \ubc1c\uc0dd<\/li><li>window.addEventListener \ud568\uc218\ub97c \ud1b5\ud574 \ub4f1\ub85d<\/li><li>\ud50c\ub7ec\uadf8\uc778\uc740 deviceready \uc774\ubca4\ud2b8 \ubc1c\uc0dd \uc774\ud6c4 \uc0ac\uc6a9\ud558\uc5ec\uc57c \ud568<\/li><\/ul>\n\n\n\n<p>index.js<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\nvar battery = $(&quot;#battery&quot;);\n\nwindow.addEventListener('deviceready', function() {\n    window.addEventListener('batterystatus', function(status) {\n        battery.text(status.level);\n    }, true);\n}, true);\n<\/pre><\/div>\n\n\n<ul><li>Virtual Device Manager &gt; AVD \uc2e4\ud589<\/li><li>&gt; cordova run android<\/li><\/ul>\n\n\n\n<h3>Cordova \uce74\uba54\ub77c \ud50c\ub7ec\uadf8\uc778<\/h3>\n\n\n\n<ul><li>\ub514\ubc14\uc774\uc2a4\uc758 \uce74\uba54\ub77c\ub85c \uc0ac\uc9c4\uc744 \ucc0d\uc5b4 \ubd88\ub7ec\uc624\uae30<\/li><li>\ub514\ubc14\uc774\uc2a4\uc758 \uc774\ubbf8\uc9c0 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc5d0\uc11c \uc0ac\uc9c4 \ubd88\ub7ec\uc624\uae30<ul><li>getPicture \ud568\uc218<br>camera.getPicture(success, error, options)<br>\u2022 success : \uc0ac\uc9c4\uc744 \ubd88\ub7ec\uc624\ub294\ub370 \uc131\uacf5\ud588\uc744 \ub54c \uc2e4\ud589\ub418\ub294 \ucf5c\ubc31\ud568\uc218<br>\u2022 error : \uc0ac\uc9c4 \ubd88\ub7ec\uc624\uae30\uc5d0 \uc2e4\ud328\ud588\uc744 \ub54c \uc2e4\ud589\ub418\ub294 \ucf5c\ubc31\ud568\uc218<br>\u2022 options : \uc0ac\uc9c4\uc744 \uac00\uc838\uc624\uae30 \uc704\ud55c option \uac1d\uccb4<\/li><\/ul><\/li><\/ul>\n\n\n\n\n\n<ul><li>\uce74\uba54\ub77c \ud50c\ub7ec\uadf8\uc778 \uc124\uce58<br>&gt; cordova plugin add &#8211;save cordova-plugin-camera<\/li><li>\uc124\uce58 \ud50c\ub7ec\uadf8\uc778 \ud655\uc778<br>&gt; cordova plugin list<\/li><\/ul>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n        &lt;button id=&quot;btnTakePic&quot;&gt;\uc0ac\uc9c4 \ucc0d\uae30&lt;\/button&gt;\n        &lt;button id=&quot;btnLoadPic&quot;&gt;\uc0ac\uc9c4 \ubd88\ub7ec\uc624\uae30&lt;\/button&gt;\n        &lt;div&gt;\n            &lt;img id=&quot;image&quot;\/&gt;\n        &lt;\/div&gt;\n<\/pre><\/div>\n\n\n<p>index.js<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\nvar battery = $(&quot;#battery&quot;);\nvar image = $(&quot;#image&quot;);\n\noptions = {\n    quality: 80,\n    correctOrientation: true\n}\n\nwindow.addEventListener('deviceready', function() {\n    window.addEventListener('batterystatus', function(status) {\n        battery.text(status.level);\n    }, true);\n\n    $(&quot;#btnTakePic&quot;).click(load(1));\n    $(&quot;#btnLoadPic&quot;).click(load(2));\n}, true);\n\nfunction load(sourceNum) {\n    return function() {\n        navigator.camera.getPicture(\n            function(imageUri) {\n                image.attr('src', imageUri);\n            },\n            function(error) {\n                alert('\uc5d0\ub7ec\ubc1c\uc0dd!');\n            },\n            {\n                sourceType: sourceNum,\n                ...options,\n            }\n        );\n    }\n}\n<\/pre><\/div>\n\n\n<h3>\ud3bc\uce68\uc5f0\uc0b0\uc790<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\n            {\n                sourceType: sourceNum,\n                ...options,\n            }\n\uc544\ub798\uc640 \ub3d9\uc77c\n            {\n                sourceType: sourceNum,\n                quality: 80,\n                correctOrientation: true\n            }\n<\/pre><\/div>\n\n\n<ul><li>\ubc30\uc5f4\uc774\ub098 \uac1d\uccb4\ub97c \ud53c\uc5f0\uc0b0\uc790\ub85c \ubc1b\uc74c<\/li><li>\ud53c\uc5f0\uc0b0\uc790\ub85c \uc804\ub2ec\ub41c \ubc30\uc5f4\uc774\ub098 \uac1d\uccb4\ub97c \ud3bc\uce68<\/li><li>\ub2e4\ub978 \ubc30\uc5f4\uc774\ub098 \uac1d\uccb4\uc5d0 \uac12\uc744 \ubcf5\uc0ac\ud574 \ucd94\uac00\ud560 \uacbd\uc6b0 \uc0ac\uc6a9<\/li><\/ul>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\nvar arr = &#x5B;1, 2, 3];\nconsole.log(&#x5B;...arr, 4, 5]);\n\nvar obj = { a:0, b:2 }\nconsole.log({...obj, c:5});\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Cordova \uc624\ud508\uc18c\uc2a4 \ud558\uc774\ube0c\ub9ac\ub4dc \uc571 \uac1c\ubc1c \ub3c4\uad6c \uc6f9 \uae30\uc220\uc744 \uc774\uc6a9\ud574 \uac1c\ubc1c \uc708\ub3c4\uc6b0, OS X, \ub9ac\ub205\uc2a4\uc5d0\uc11c \uc0ac\uc6a9 \uac00\ub2a5 \uc548\ub4dc\ub85c\uc774\ub4dc, iOS, Mac OS X, \uc708\ub3c4\uc6b0 \ub4f1 \uba40\ud2f0 \ud50c\ub7ab\ud3fc \uc9c0\uc6d0 \ud50c\ub7ec\uadf8\uc778\uc744 \ud1b5\ud55c \ud655\uc7a5 Cordova \uc758 \ud55c\uacc4 \ub124\uc774\ud2f0\ube0c \uc571\uc5d0 \ube44\ud574 \uc131\ub2a5\uc774 \ub5a8\uc5b4\uc9d0 \ud50c\ub7ec\uadf8\uc778 \uac1c\ubc1c\uc758 \uc5b4\ub824\uc6c0 Cordova\uc758 \uc791\ub3d9\uc6d0\ub9ac Cordova \uac1c\ubc1c\ud658\uacbd NodeJS \/ Cordova \ud50c\ub7ab\ud3fc \ubcc4 \uc694\uad6c\uc0ac\ud56d \uc548\ub4dc\ub85c\uc774\ub4dc: JDK, \uc548\ub4dc\ub85c\uc774\ub4dc SDK JDK [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false},"categories":[38,37],"tags":[],"_links":{"self":[{"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1280"}],"collection":[{"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/comments?post=1280"}],"version-history":[{"count":21,"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1280\/revisions"}],"predecessor-version":[{"id":1320,"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1280\/revisions\/1320"}],"wp:attachment":[{"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/media?parent=1280"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/categories?post=1280"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/tags?post=1280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}