강좌 : 폰갭 앱 개발 PhoneGAP App Development
작성자 : 송재호
저작권 : 없음. 본 문서는 누구든지 마음데로 활용하실 수 있습니다.
ADT ( 안드로이드 Development Tool ) 설치
명령행에서 실행이 잘 안되면 이클립스에서 실행하면된다.
요약
본 문서는 필리핀 최대의 정보 사이트 필고 http://www.philgo.com 커뮤니티 활성화와 필리핀에 계시는 교민들 중 IT 에 관심있는 분들께 도움을 드리고자 작성한 강좌입니다.
화상 회의, 원격 지원 등 온라인으로 주로 강좌가 진행되며 오프라인 스터디도 진행 할 계획에 있습니다.
2013년 7월 19일, 폰갭 3.0 이 세상에 드러났습니다.
폰갭 2.0과 3.0에는 차이가 많다고 하니, 본 문서는 3.0 을 기준으로 설명을 하겠습니다. 다만 2.0을 기준으로 작성된 내용은 별도로 표시를 하겠습니다.
이후 문서에서는 존칭을 생략하겠습니다.
참고 자료
필고
본 강좌에서는 필고와 연동하는 앱을 작성하는 예를 보일 것이다.
본 (강좌) 문서의 원본는 “구글 드라이브 폰갭 앱 개발” 에 있다. 여러분들이 본 문서의 최신 버젼을 얻고 싶다면 이 링크를 참고하시면 됩니다.
폰갭
phonegap.com
Node.js
nodejs.org
노드는 참 신기하며 그리고 새로운 프로그래밍 패러다임을 이끌 고 있다. 기회가 된다면 별도의 강좌로 여러분들께 꼭 가르쳐드리고 싶다. 하지만 이 문서에서는 노드에 대해서 설명을 하지 않는다.
요즘 대세는 자바스크립트인 것 같다. 자바스크립트를 잘 하는 개발자가 진정한 개발자로 취급을 받는 듯하다.
폰갭의 이해
대부분의 모바일 플랫폼은 WebView 를 가지고 있다.
이 부분에 착안하여 기본적인 기능은 HTML, CSS, Javascript 로 만들고 WebView 에서 동작하기 위해 필요한 Device(Native Code) 부분은 PhoneGap Framework 가 보완하도록 하여 앱을 개발 할 수 있도록 해 주는 것이 폰갭의 역활이다.
좀 더 쉽게 말하면 폰갭이 HTML,CSS,JAVASCRIPT 로 모바일 안에서 앱으로 실행될 수 있도록 Wrapper 역활을 한다고 보면 된다.
더 쉽게 말하면, 간단한 홈페이지를 들면 폰갭이 앱으로 실행되도록 해 준다고 생각을 하면 된다.
지원 OS
iOS, Android, BlackBerry, WebOS, Symbian, Bada, Windows8 등 등
PhoneGap 과 Cordova 개발 주체
PhoneGap 을 Adobe 에서 인수해서 Apache 재단에 기부하였다.
따라서 PhoneGap 은 Apache Software Foundation(아파치 소프트웨어 재단)의 것이며 Open Source 이다.
폰갭은 Adobe 에 의해서 계속 유지되고 있으나 Cordova 에 몇 가지 기능을 추가한 것이다.
Apache Cordova
PhoneGap 1.5 부터 정식 소프트웨어 명칭은 Apache Cordova 이다.
본 문서를 처음 작성 할 때에는 PhoneGap 을 위주로 설명 하였으나 2014년 부터는 PhoneGap 을 사용하지 않고 Cordova 를 사용한다.
개발 전략
Cordova 앱 개발 전략 문서 참고
Adobe PhoneGap Build 에서 한번의 컴파일로 여러 OS 에서 사용 할 수 있도록 해 주고 있는데 이것은 단지 테스트 용일 뿐 실제로는 각 OS 에서 테스트를 해야 한다.
설치하기전
본 문서에서는 여러분이 컴퓨터에 대해서 어느 정도 알고 있다고 생각을 하고 진행한다. 적어도 환경 변수가 무엇을 하는지 어떻게 관리하는지 정도는 잘 알고 있어야 한다.
참고로 환경 변수 등록은 윈도우즈7 기준으로 “시스템고급설정”에서 환경변수 등록 버튼을 찾을 수 있다.
윈도우즈 7에서 이클립스를 통한 안드로이드 앱 개발 환경을 만드는 것으로 목표로 하겠다. iOS 는 차 후에 설명을 할 수 있도록 한다.
작업 폴더를 “C:\Development” 로 하도록 한다. 그리고 앱 작업 폴더는 “C:\Development\workspace” 로 한다.
윈도우즈XP 나 비스타 등에서도 크게 다르지 않다고 생각하므로 적절하게 응용을 하면 될 것이다.
Node, ADT, ANT 의 설치는 순서와 상관 없이 진행하면 된다. 동시에 같이 진행을 해도 된다.
설치 요약
설치가 약간은 복잡하는 것 같다. 아마 처음 하시는 분들에게는 쉽지 않은 것이라 생각을 한다. 그래서 최대한 쉽게 작성을 하려고 노력을 해 보지만 여러분들이 어떻게 받아 들일지는 의문이다.
- JDK, ANT, NODE 을 설치를 해야 한다. 이 3 가지는 순서에 상관없이 따로 설치를 해도 된다.
JDK 과 ANT 는 특별한 설치 과정이 없이 압축만 풀면 되는데, 중요한 것은 환경 변수에 올바로 등록을 하는 것이다. - 그리고 나서 ADT 를 설치해야 한다.
- 그 다음은 PhoneGap 을 설치하는 것이다.
- 그리고 앱 생성을 하는데, 이때에 또 추가적인 (플러그인 등의) 설치 작업이 필요 할 수 있다.
아래의 사진은 자바와 ADT 를 동시에 설치를 하는 모습이다. 설치의 순서가 중요한 것이 아니라 정확하게 무엇이 설치되고 어떻게 연동이 되는지 그리고 어떻게 관리를 할 것인지를 이해 할 수 있어야 한다. ( 그렇다고 처음 부터 너무 깊이 빠져들 필요는 없다. 서서히 시간을 들이면서 내공을 쌓아야 하는 것이다. 여러분들은 본 문서에 나오는 순서데로 차근 차근 설치를 해 보기 바란다.)
(사진 : Java 와 ADT 설치 )
JDK 설치
java.com 에 들어가보니 그냥 다운로드하도록 되어져 있는데, 2013년 9월 현재 Java SE Runtime Environment 7 이 다운로드 된다.
반드시 JDK 를 설치해야 한다. (JRE 를 설치해도 된다고 하는데, 본인의 경험으로는 JDK 를 설치해야지 제대로 빌드가 되었다.)
아래의 링크에서 JDK 를 설치한다.
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
설치가 끝나면 대부분은 “C:\Program Files” 또는 “C:\Program Files(x86)” 에 등록이 될 것이다.
(설치 옵션 에 따라서 다른 위치 일 수도 있다.)
(사진 : JDK 가 설치된 위치 )
설치를 하였으면 환경 변수를 등록해야한다.
우선 커맨드 라인 창을 연다. 윈도우즈 시작 버튼에서 CMD 명령으로 열 수 있다.
그리고 아래와 같이 환경 변수 정보를 살펴본다.
보시다시피 자바에 대한 정보가 환경 변수로 등록이 되어져 있지 않다.
아래와 같이 JAVA_HOME 환경 변수를 추가하고 그 위치 값은 자바 설치 폴더 경로를 입력한다.
중요: JDK bin 폴더가 아닌 JDK 설치 폴더를 지정해야 한다.
그리고 javac.exe 가 있는 폴더를 PATH 에 추가해 준다. javac.exe 는 jdk 폴더 아래의 bin 폴더에 있을 것이다.
현재 사진을 찍으면서 설치하는 컴퓨터에는 PATH 환경 변수가 등록되어져 있지 않았다. 따라서 추가를 해 주었다.
그리고 기존의 커맨드 라인 창을 닫고 다시 열어서 아래와 같이 잘 나오는지 확인을 한다.
( 참고 : JAVA_HOME 에 JDK 경로가 지정되지 않으면 codova ploatfrom add 에서 cordova.x.x.x.jar 가 생성이 되지 않는다. 특히 JRE 로 하면 생성되지 않는다. )
ADT ( 안드로이드 Development Tool ) 설치
http://developer.android.com/sdk/index.html 에서 다운로드 하여 설치 할 수 있다.
(본인의 컴퓨터가 32 bit 인지 64 bit 인지에 따라 다운로드 하는 파일이 틀리다.)
이 다운로드 압축 파일에는 아래와 같은 것들이 있다. Eclipse 가 기본적으로 포함되어져 있는 것을 확인 할 수 있다.
Eclipse + ADT plugin
Android SDK Tools
Android Platform-tools
The latest Android platform
The latest Android system image for the emulator
설치는 간단하다. 압축을 풀면 설치가 끝난다. 다만 환경 변수 PATH 에 설치된 경로를 지정해야한다.
본인의 컴퓨터에는 C:\Development\adt 와 같이 저장을 했다. PATH 에는 아래와 같이 추가를 했다. platform-tools 가 먼저 지정되어야 한다.
C:\Development\adt\sdk\platform-tools;C:\Development\adt\sdk\tools;
C:\Development\adt\eclipse\eclipse.exe 프로그램이 이클립스이다.
이클립스를 더블클릭해서 실행하면 workspace 를 물어보는데, 본인은 C:\Development\workspace 와 같이 했다. 그리고 종료한다.
커맨드라인에서 android 를 실행해서 API Target 17, 18 전체를 설치한다. 여기서 설치를 하지 않으면 나중에 다시 설치하라고 얘기 할 것이다.
설치후 추가적(종속적)으로 설치하라는 플러그인을 다 설치한다.
API 타겟이란, 앱을 제작 할 때, 어떤 API 에 맞출 것인가를 선택하는 것이다. 너무 최신 버젼의 API 맞추면 옛날 버젼의 안드로이드에서는 동작을 하지 않을 수 있다.
또는 빌드를 할 때, API Target 번호를 찾을 수 없다면 적절한 다른 API Target 을 설치 하면 된다.
(사진 : adt 와 ant 를 설치한 모습. 별거 없다. 그냥 압축 풀고 적절한 이름을 변경하면 된다. 그리고 환경 변수에 등록하면 끝.)
ANT 설치
ANT 다운로드 : http://ant.apache.org/bindownload.cgi
Apache ANT 는 자바 패키지를 관리하는 툴이다.
만약 ant 가 설치되어져 있으면 설치 할 필요는 없다. 본인의 컴퓨터에는 없어서 별도로 설치를 한 것이다.
다운로드해서 압축을 해제하는 것으로 설치가 끝난다. 본인은 C:\Development\ant 에 저장을 했다.
ANT 의 경우 환경 변수 PATH 에 ANT/bin 폴더를 지정하고 ANT_HOME 변수에 ANT 폴더 경로를 지정해야한다. 즉, 2 개의 환경 변수에 등록해야 하는 것이다.
%PATH% 에 “C:\Development\ant\bin” 추가 |
ANT_HOME 환경 변수에도 등록을 하는데, bin 경로가 아닌 설치 폴더를 지정한다.
ANT_HOME = c:\Development\ant |
NODE.JS 설치
http://nodejs.org 에서 다운받아서 설치하면 된다.
폰갭 3.0 설치
노드를 설치 했으면 이제 폰갭을 설치 할 차례이다.
폰갭으로 하지 않고 cordova 로 한다.
Cordova 설치
C:\Development\workspace> npm install -g cordova
업데이트
참고로 3.2 버젼으로 업데이트( npm -g update cordover )를 하려는 데 에러가 나서 아래와 같이 삭제를 하고 재 설치를 했다.
; 삭제 npm remove -g cordova npm remove -g phonegap ; 설치 npm install -g phonegap ; 위 처럼 설치하니 phonegap@3.3.0-0.17.1 와 같이 업데이트 된 것을 볼 수 있다. |
Cordova 로 앱 생성
create 명령 에러시 해결
cordova create 시 www/index.html 등의 기본 파일이 생성되지 않는 문제. 해법 1 : cordova version 3.3 앱 생성하는데 create 명령어로 app-name/www 폴더에 기본 파일이 제대로 생성되지 않아서 cordova version 3.2 로 다운 그레이드 해서 하니 된다. |
cordova create 시 www/index.html 등의 기본 파일이 생성되지 않는 문제. 해법 2 : 원칙적으로 lazy loading 관련이 있는데, c:\users\user_name\.cordova 에서 해당 버젼의 www 를 삭제하고 다시 생성하면 된다. |
앱 생성을 하는 방법은 여러가지가 있다.
아래와 같은 명령으로 한다.
> cordova create hello com.example.hello HelloWorld
(참고: 만약 cordova 명령을 내렸는데, 실행 파일을 찾지 못한다면 글로벌 옵션 -g 로 설치가 되지 않았을 수 있으니 다시 설치하고 그래도 안되면 명령을 내리는 위치에 설치를 해 본다.)
hello 는 디렉토리 이름이다. hello 라는 폴더를 생성하는데, 이 폴더에는 www 폴더와 그리고 그 하위에 css, js, img 등이 생성된다.
config.xml 에는 앱을 생성하고 배포하는데에 필요한 메타데이터가 기록된다.
두번째 파라메타로 “com.example.hello” 가 있는데, 도메인 이름을 거꾸로 지정하는 것이 원칙인데, 앱의 고유한 도메인 주소이다. ( 이 값은 고유 값이로 지정을 하면 된다. )
세번째 파라메타 “HelloWorld” 는 프로젝트 (앱) 이름이다.
아래와 같이 옵션을 기호를 지정해서 앱을 생성 할 수도 있다.
> cordova create hello -n HelloWorld -i com.example.hello
> cordova create hello --name HelloWorld --id com.example.hello
여기서 앱을 생성했다는 것은 그냥 단순히 앱을 만들기 위한 기초 소스를 생성했다는 것이다.
본 예제에서 생성된 소스는 hello 폴더에 있는데 그 아래에 www 폴더가 있고 그 아래에 index.html 파일이 있는데 이 HTML 을 수정하면 되는 것이다.
플랫폼 추가
앱을 위와 같이 생성했으면 앱을 어느 플랫폼(iOS, Android, BlackBerry 등)에서 쓸 것인지 결정을 해야한다.
안드로이드에서 개발을 한다면, 아래와 같이 안드로이드 플랫폼을 추가하면 된다.
앱 생성 후 항상 앱 폴더로 들어가서 명령을 내려야 한다.
( 주의 : 프로젝트 이름에 특수문자 사용 불가 )
C:\Development\workspace>cordova create hello org.local.hello "hello"
C:\Development\workspace>cd hello
C:\Development\workspace\hello>cordova platform add android
만약 플랫폼을 추가하는 과정에서 “Please install Android API target 17...” 와 같은 에러가 발생한다면, 아래와 같이 android 를 실행해서 API target 17 부터 그 이후의 것을 모두 설치한다.
C:\Development\workspace\hello> android
와 같이 하면 Android SDK Manager 툴이 뜬다. API target 을 선택하고 설치한다. API target 버젼을 설치하고 나면 추가로 설치해야 할 플러그인들이 표시되는데 마저 다 설치하도록 한다.
중요 : 플랫폼을 추가한 후 dir platforms\android\libs 와 해서 cordova.x.x.x.jar 파일이 생성되어 있는지 확인을 한다.
왜 그런지는 모르겠지만 때로는 cordova.x.x.x.jar 가 생성이 안되는 경우가 있다. 반복적으로 테스트를 해 본 결과 프로젝트 이름에 특수문자가 들어가면 안되는 것 같기도 하다.
이 부분은 본인도 아직 더 공부를 해 보아야 할 것 같지만 프로젝트 이름에는 공백이나 느낌표, 물음표, 하이픈 등을 넣지 않도록 한다.
Phonegap 명령으로 앱 생성
명령행에서 모두 실행
http://phonegap.com/install/ 에 나와 있는 데로 설치를 하는 방법이다.
phonegap 3.3.0 최신 버젼으로 하니 Android Target 19 를 설치하라고 한다.
명령형에서 그냥 android 라고 입력해서 설치하면 된다.
phonegap create my12 --name PhilCompany --id com.philgo.comapny cd my-app phonegap run android |
주의 : 만약 config cannot be resolved 와 같은 에러가 나면 --id 는 생략하고 생성을 해 본다. 그래도 에러가 나면 옵션을 다 빼고 해 본다.
--name 은 프로그램 이름이며, --id 는 도메인 형식의 ID 이다.
my12 는 폴더명이다.
phonegap run android 를 실행해야지 android 플랫폼이 추가 된다.
명령행에서 실행이 잘 안되면 이클립스에서 실행하면된다.
이클립스에서 오픈
위와 같이 실행하고,
File -> New -> Project -> Android Project from Existing code -> 해당 프로젝트 선택
수정
안드로이드의 HTML 파일 경로는 아래와 같다.
\philcompany\platforms\android\assets\www
Eclipse 에서 빌드 및 테스트
Eclipse 를 실행하고 File -> New > Project -> Android Project from existing code -> 앱폴더 선택
RUN
RUN -> Run Configuration -> Android Application (더블클릭) -> Project (개발 중인 프로젝트 선택)
Target 탭에서 “Alway prompt to pick device” 선택
Run 버튼 클릭
연결된 디바이스 선택 ( 이 때 디바이스는 USB 디버깅 모드로 선택되어져 있어야 한다. )
만약 연결된 디바이스가 없으면 Android Virtual Device Manager 를 통해서 새로운 가상 디바이스를 생성하고 테스트를 하면 된다.
(사진 : 생성한 앱을 Eclipse 에 추가하는 모습)
(사진 : Eclipse 에서 HTML 파일 수정하는 모습 )
( 사진 : 실제로 빌드하고 샐행한 간단한 앱 )
Eclipse ini 설정
Cordova emulator 속도가 상당히 느리다. 뿐만아니라 cli 에서 cordova run 도 속도가 느린편이며 prepare 과정에서 소스를 덮어 쓰기 때문에 작업이 용의한 편이 아니다.
Eclipse 로 개발이 불편하여 notepadd++ 로 작업을 하는데, 실행은 Eclipse 로 해야한다. 이때, project clean 을 항상 실행해 주어야하는데, 불편하다.
RUN 을 할 때, project clean 을 먼저 해주는 방법은
eclipse 를 설치한 경로에서 eclipse.ini 파일을 열어서 맨 위에 --clean 를 추가해 주면 된다.
Eclipse 편집기
HTML 파일은 HTML Editor 로 열고,
Javascript 는 Javascript Editor 로 열어서 사용한다.
CSS 는 CSS 에디터로 열어서 사용하면 된다.
Eclipse 텍스트 편집기 환경 설정
폰트 체
Window -> Preference -> General -> Appearance -> Colors and Fonts 에서 굴림체 10pt 로 바꾸고 적당하게 수정하면 된다.
Gulim 으로 하지 말고 GulimChe 로 할 것.
스펠링 Spelling
글자 밑에 빨간색 줄이 나온다. 스펠링 옵션을 제거하면 된다.
동일한 단어가 5 번 이상 연속으로 나오면 에러가 아닌 것으로 표시를 한다.
Web Developer Tools
웹 작업을 하는데 편리한 Web Developer Tools 를 설치한다.
(사실 왜 이것을 설치해야하는지 모르겠음. 이것을 설치 후에 HTML, Javascript, CSS 가 활성화가 되는지 모르겠음)
단축키
Window -> Preferences -> General -> Keys 에서 기존에 F4 로 바인드되어 있는 것을 지우고 Run 을 F4 로 바인드한다.
총체적인 평가
Eclipse 편집기는 사용이 불편하다.
특히 개발 작업과 테스트 작업이 모두 Notepad++ 와 크롬 브라우저로 이루어지고 마지막 에러 점검만 모바일 장치에서 하게된다.
그리고 Eclipse 로 모바일 장치에서 실행되는 앱을 직접적으로 디버깅을 할 수가 없다.
즉, Eclipse 편집기의 활용 가치가 상당히 떨어진다.
그냥 Notepad++ 로 작업하고 크롬으로 테스트 할 것. 그리고 마지막 과정에 Eclipse 로 모바일 장치에 앱을 설치하고 디버깅 메세지 정도를 테스트한다.
Eclipse.ini 에 --clean 추가하고 F4 로 RUN 커맨드를 바인드해서 사용한다.
Cordova 개발 문서
폰갭을 피한다.
개발 주체가 Apache 이고 Cordova 로 서비스 된다. PhoneGap 은 Cordova 에 작은 기능을 추가 한 것 뿐이며 유료/무료 서비스가 있다.
http://cordova.apache.org/docs/en/3.3.0/
플러그인 추가
폰갭 3.0 부터는 필요한 기능을 플러그인으로 설치해야 한다.
참고 : http://docs.phonegap.com/en/3.2.0/guide_cli_index.md.html#The%20Command-Line%20Interface
phonegap local plugin list |
현재 프로젝트에 설치된 플러그인 목록을 한다.
우선 Git 부터 먼저 설치를 한다. GIT 을 설치할 때, 윈도우즈 Command Prompt 에서 사용 하도록 옵션 체크를 해야한다.
설치하는 예제는 아래와 같다. 잘 설치 안되는 경우가 많아서 혼났다.
요점은
- plugin add 를 했으면,
- 다시 phonegap run android 로 재 설치하고 컴파일 해야 한다.
이 때, android platform 의 코드를 다시 복사하므로 소스코드가 모두 초기화되는 것 같다. 따라서 CVS 작업을 먼저 커밋해야 한다.
CMD> phonegap create test8 --name test11 CMD> cd test11 CMD> phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-network-information.git CMD> phonegap run android CVS> app-src 체크 아웃하고, index.android.html 을 상위로 복사 한 후, Eclipse> Project -> Clean 후 실행 |
plugin 제거
phonegap local plugin remove org.apache.cordova.core.console |
제거 할 때도 마찬가지로 플랫폼 소스를 초기화 하므로 작업 중인 소스를 커밋해야 한다.
plugin 버젼 별 추가
최신 버젼의 device plugin 에 문제가 있어서 그 이전버젼으로 설치한 경험이 있다.
아래와 같은 형식으로 추가하면 된다.
cordova plugin add [PLUGIN ID]@[VERSION] |
예
cordova -d plugin add org.apache.cordova.device@0.2.5 |
iOS 개발 ( 개발 환경 준비 )
PhoneGap 으로 iOS 앱 개발을 위한 준비 과정을 설명합니다.
본 글에서는 여러분이 Mac OS 에 대해서 잘 알고 있다고 가정을 하고 설명을 합니다.
사실 저는 Mac 을 잘 사용하지 못합니다. 이번이 딱 두번째 쓰는 것입니다. 프로그램을 다운받고 설치하는 방법도 몰라서 엄청헤멨네요.
과거 버전의 PhoneGap 으로 iOS 앱 개발에 대한 문서는 아래 링크를 참고하십시오.
최신 버젼 설치
2013년 12월 22일 현재 제 맥북에는 OS X Version 10.9.1 이 깔려져 있습니다. Mavericks 라고 하네요.
Xcode 는 5.0.2 버젼입니다.
( 맥북을 사용 할 줄도 모르는데, 어제 업데이트 하느라고 고생을 좀 했죠. 인터넷 카드가 안잡혀서.. ㅡㅡ; Xcode 사용 법도 다 잊어 버렸네요 ㅡㅡ; )
폰갭 최신 버젼은 3.3 입니다.
자 그럼 설치해 볼까요?
폰갭 설치
http://phonegap.com/install/ 에 있는 문서 대로 하지 말구요,
http://docs.phonegap.com/en/3.3.0/guide_cli_index.md.html#The%20Command-Line%20Interface 에 나오는 대로 하면 됩니다.
phonegap 과 cordova 의 명령어가 약간 틀리는데 주로 cordova 를 많이 사용하는 것 같습니다.
그리고 http://docs.phonegap.com/en/3.3.0/guide_platforms_ios_index.md.html#iOS%20Platform%20Guide 문서를 보시면 됩니다.
그런데 저 문서를 언제 다 읽겠습니까...
무식하면 용감하다고. 그냥 무대뽀 정신으로 갑니다.
nodejs 설치
nodejs.org 에서 설치합니다. 따로 설명이 필요하나요? 그렇다면 필고 개발자 그룹의 노드 강좌를 참고해 주세요.
http://dev.philgo.com/?1269552300
nodejs 설치하는 과정이 신기하네요. 윈도우즈 프로그램 설치 처럼 몇 번 클릭으로 됩니다. ( OS X 프로그램 설치가 어려워서 잔뜩 긴장하고 있었는데요 ... )
아래 처럼 하니 node 버젼이 v0.10.24 라고 나오네요.
node -v |
Cordova 설치
아래와 같이 하면 됩니다.
$ su - # npm install -g cordova |
폰갭 앱 생성 및 실행
$ cordova create app1 com.example.app1 HelloApp1 $ cd app1 $ cordova platform add ios $ cordova build |
cordova build 대신 cordova build ios 라고 입력해도 되며 build 대신 prepare 를 사용해도 된다.
Xcode 에서 HelloApp1.xcodeproj 파일을 더블클릭하여 해당 프로젝트를 연다.
그리고 왼쪽 상단에 Emaulator 를 선택하고 실행하면 된다.
앱 배포
앱 배포는 다른 사람들이 사용 할 수 있도록 앱마켓(앱스토어 등)에 올리는 것이다. 이렇게 하면 다른 사람들이 앱을 검색해서 설치 및 사용을 할 수 있다.
구글 플레이스토어 같은 경우 심사 과정도 없고 별도의 비용도 들지 않아 비교적 앱 등록이 간편하다.
하지만 애플 앱 스토어의 경우 멤버쉽에 가입해야 하고 장시간의 심사 과정을 거쳐야 한다. 뿐만아니라 심사 단계에서 거절되기 십상이어서 비교적 등록이 어렵다.
이 부분에 대해서 차후에 설명을 하겠다.
오프라인에서 잘 보이게
특히 iOS 에서는 오프라인에서 잘 나오지 않으면, 앱 등록에서 거절 당할 수 있다. 본인이 iOS 앱 스토어에 앱을 처음 등록할 때, 약 7번 정도는 거절 당한것 같다.
오프라인에서도 잘 보이게 하는 것을 다른 말로 하면 “성의 있게” 앱을 만들라는 것이다.
Ajax 대신 웹 소켓으로
기존에는 Ajax 에서 Cross Domain 호출을 하기 위해서 JSONP 호출을 했는데, 서버 스크립트와 동작을 맞추어야 해서 여간 불편한 것이 아니었다.
지금은 소켓접속으로 크로스 도메인 상태의 데이터를 쉽게 가져 올 수 있다.
필고 API 를 통한 필리핀 정보 제공 앱 개발
게시판 및 각종 필리핀 정보, 통계 등을 활용 할 수 있다.
필고 api
<script>
var io = io.connect('127.0.0.1:8080');
console.log('io connected!');
io.emit('api', {'post_id': 'freetalk'});
io.on('api-forum-list', callback_forum_list);
function callback_forum_list(data)
{
console.log('io on forum-api-list');
console.log(data.list);
posts = JSON.parse(data.list);
for ( i=0; i < posts.length; i++ ) {
$('body').append("<div>subject: "+posts[i].subject+"</div>");
}
}
</script>
개발 팁
폰갭 online / offline event
앱이 실행 될 때, online, offline 이벤트가 한번 이상 발생한다.
따라서 온라인이면 어떤 작업을 하려 한다면, device ready 이벤트 보다는 online 이벤트에서 하는 것이 좋다.
jQueryMobile 을 사용 할 수 없는 이유
동적으로 HTML 을 추하가고 rendering 을 잘 할 수 없음.
공유 소스
현재 app-src 와 app-proxy CVS 프로젝트로 개발 중이다.
공유 할 수 있는 최대한의 소스 코드를 CVS 에 넣고,
최대의 호환성을 유지한다.
예를 들면 BODY 태그에는 아무값도 없이 빈 값이다.
자바스크립트로 처리를 하면 된다.
app-src/css/company.css 처럼 모든 media query 를 처리한다.
app-proxy 에서 호출하는 api 는 아래와 같이 리턴을 해야 한다.
<div class=title>
<div class=subtitle>
<div class=line>
<a ...>
<span class=’...’>...</span>
</a>
</div>
</div>
이미지가 있는 경우에는 .line 부분을 아래와 같이 출력해야 한다.
<div class="line image" idx="1269621687">
<a href="javascript:void(0);">
<span class="icon"><img src="http://philgo.com/etc/image_resize.php?&adaptive=1&w=64&h=64&path=../data/upload/0/820230" border="0"></span>
English4foreign Online School / (+632) 352-1381
</a>
</div>
구글 맵
개발 툴
크롬 Canary 는 기본 크롬 버젼 보다 훨씬 앞선 버젼으로 개발자나 디자이너를 위한 것이다.
https://developers.google.com/chrome-developer-tools/docs/mobile-emulation#enable-emulation-panel
문제 해결 : 에러 처리
App has stopped
여러가지 원인이 있을 수 있다.
직접 경험한 예를 들면,
앱 생성을 하고 “cordova run android” 로 실행하고 종료를 하면 “app has stopped” 라는 에러가 발생하는 것이다.
여러 플러그인 추가를 하는데, 다른 플러그인을 추가하면 문제가 없는데
org.apache.cordova.device 플러그인만 추가하면 “HelloCordova” has stopped 와 같은 에러가 발생하였다.
처음에는 문제의 원인을 찾지 못하여 cordova 를 업데이트하고 dos cli 에서 android (각종 SDK, 라이브러리) 를 업데이트 하였다.
그래도 에러는 계속 되어서 plugin 을 하나씩 추가하면서 테스트를 해 보았는데 device 플러그인을 추가하면 “app has stopped” 라는 에러가 발생하는 것이다.
검색을 통해서 오랜 시간 동안 해결책을 찾으로 노력했지만 해결을 하지 못했다.
그래서 다음과 같이 우회를 했다.
2014년 1월 2일 : Cordova Plugins 가 업데이트 됨. 2014년 1월 2일 이후로 device plugin 을 추가하면 app has stopped 에러가 발생. 업데이트된 버젼은 device@0.2.6 인데, 이것을 빼고 device@0.2.5 버젼으로 하니 문제가 없다. |
APK 설치가 안되는 경우,
아래와 같은 에러가 나는 경우가 있다.
이것의 주요 원인은 동일한 APK 키(CETIFICATES, 또는 앱 id)가 이미 설치하려면 장치(mobile device 등)에 설치가 되어져 있는 경우이다.
예를 들면, 집에 있는 컴퓨터로 빌드하고 이미 장치에 설치했는데,
사무실에 있는 컴퓨터로 다시 빌드하고 (다른 컴퓨터로) 똑같은 장치에 설치하려는 경우 에러가 발생한다.
이 같은 경우 모바일에서 해당 앱을 완전히 삭제하고 다시 빌드를 하면 된다.
ERROR: Failed to launch application on device: ERROR: Failed to install apk to device: pkg: /data/local/tmp/Angeles-debug-unaligned.apk
Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]
"Application not installed. An existing package by the same name with a conflicting signature is already installed."
또는 그냥 다른 앱 id 를 만들어서 빌드하는 것이 좋다.
빌드 에러
아래와 같이 에러 메세지가 발생하는 경우,
The container 'Android Dependencies' references non existing library ... |
Cordova 3.0 부터는 Eclipse 에서 하나의 앱을 만드는데, 2개의 프로젝트가 생긴다.
따라서 Clean 을 할 때,
위 빨간색 네모 처럼 전체를 다 Clean 하고
아래 빨간색 네모 처럼 일부분만 빌드한다면
이와 같은 에러가 발생할 수 있다.
2014 년 1월 16일 윈도우즈8 설치
English version of installation guide
SE JDK Development Kit 설치
다운로드 사이트
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html |
jdk-7u51-windows-x64.exe 파일을 다운로드 하여 설치한다.
JDK 환경 변수 추가
환경 변수 JAVA_HOME 에 JDK 설치 폴더를 지정한다.
중요: JDK bin 폴더가 아닌 JDK 설치 폴더를 지정해야 한다.
NodeJs 설치
nodejs.org 에서 설치를 한다.
환경 변수에 설정을 해 주어야 한다.
예) 아래의 값을 경로 변수에 추가한다.
;C:\Program Files\nodejs |
Cordova 설치
npm install -g cordova |
Ant 설치
ant 를 설치하지 않으니, cordova platform add 를 할 때 에러가 발생한다.
ant 설치를 하고 환경 변수를 추가한다.
ADT 설치
adt 를 설치 하지 않으면 platform add 를 할 때, target 이 지정 되지 않았다고 한다.
adt 를 설치하고 환경 변수를 추가한다.
Target 설치
어떤 장치(또는 안드로이드 API)까지 지원할 것인지 관련 라이브러리(SDK 등)를 설치한다.
CLI 에서 android 라고 입력하고 필요한 것 설치한다.
target 을 설치하니 “cordova platform add android” 명령을 실행할 수 있다.
TEST APP실행
cordova run android 명령을 하니 JAVA_HOME 환경 변수가 등록되어 있지 않다고 한다.
환경 변수에 등록하고 나니 문제 없이 실행되었다.
Eclipse 를 통한 실행
별 문제 없이 실행되었다.
'모과이 > 스크랩' 카테고리의 다른 글
소스분석 방법 (0) | 2014.12.31 |
---|---|
각종 오픈소스 제약사항 관련 (0) | 2014.10.12 |
Windows Event Log 서비스 시작안될때 (0) | 2014.04.21 |
포팅(porting)이란? (0) | 2014.04.12 |
석박사과정에 대한 스크랩 (0) | 2013.12.28 |