====== PhoneGap ====== ===== 개요 ===== PhoneGap 은 HTML5, JavaScript, CSS를 사용하여 디바이스 하이브리드 어플리케이션을 구축하기 위한 오픈소스 프레임워크 이다. ===== 설명 ===== PhoneGap의 전체 구성은 아래와 같이 구성되어 있으며 해당 구성에 사용자가 정의한 플러그인 추가기능을 통한 확장이 가능하다 PhoneGap은 기본적으로 두 가지의 컴포넌트를 포함한다 * 브라우저 (웹뷰 등)에서 실행 될 JavaScript내에서 디바이스의 고유 기능을 제어 할 PhoneGap JavaScript API * PhoneGap 자바스크립트와 연계 될 플랫폼 별 Native Code PhoneGap은 Device API 제어를 위해 미리 구현 한 JavaScript 및 SDK 연계를 위한 Native Code 외에 추가기능을 위해 구현 된 Plug-In을 구성하고 있는 PhoneGap Custom Plug-In 과 PhoneGap Custom Native Plug-In이 추가된다. 아래 그림을 참고하면 PhoneGap는 웹 표준 기술로 처리 할 수 없는 기술 처리를 위한 Device API를 사용한다. Device API 제어를 위해 JavaScript로 구현되어 제공되는 PhoneGap.js 와 플랫폼 별 WebView를 상속 받아 Mobile Web Application과 연계를 Native Code의 집합인 PhoneGap.jar와 PhoneGap.framework로 구성한다. 또한, PhoneGap Plug-in 영역은 자바스크립트 구현 부분과 Native 구현 부분으로 구성한다. 자바스크립트 커스텀 플러그인의 작성은 Cordova.exec Function을 호출하여 구현하며, Native 구현은 커스텀 플러그인 작성을 위해 CDVPlugin 클래스를 상속 받는다. {{:egovframework:hyb:hrte:폰갭_구성도.png?500|}} ^ 구분 ^ 설명 ^ | Mobile Web Application | HTML, CSS, 사용자 정의 JavaScript | | PhoneGap JavaScript Engine | Device API 제어를 위해JavaScript로 구현되어 제공 | | | cordova(PhoneGap).js | | PhoneGap Native Engine | 플랫폼 별 WebView를 상속받아 Mobile Web Application과 연계를 위한 Native Code | | | cordova(PhoneGap).jar, cordova(PhoneGap).framework | | PhoneGap Custom Plug-In | 기능 확장을 위해 추가 된 Plug-In을 위한 JavaScript 코드 | | | 사용자 정의 JavaScript Plug-In 을 포함 | | | 플랫폼 별로 플러그인을 위한 Native 코드 구성이 상이함에 따라 JavaScript 구성또한 다를 수 있음 | | PhoneGap Custom Native Plug-In | 기능 확장을 위해 추가 된 Plug-In을 위한 플랫폼 Native 코드 | ==== 라이브러리 구성 ==== PhoneGap 프로젝트는 일반적인 디바이스 어플리케이션 SDK 프로젝트 내에 하이브리드 앱 구현을 위한 PhoneGap 프레임워크 및 추가 웹리소스가 추가 된 구조이다. PhoneGap 라이브러리는 웹 리소스와 디바이스 고유 기능 연계를 위한 디바이스 별 Native Code 와 JavaScript 코드로 구성 되어있다. === Android === * cordova-2.9.0.jar : Android 고유 기능 호출을 위한 Native Code * cordova.js : 실제 디바이스 API가 포함되어 있으며 cordova-2.0.0.jar 내의 Naitve Code 함수를 플러그인 형태로 호출한다. === iOS === * CordovaLib.xcodeproj : iOS 고유 기능 호출을 위한 Native Code가 존재하는 Sub 프로젝트 * cordova.js : 실제 디바이스 API가 포함되어 있으며 cordova.framework 내의 Naitve Code 함수를 플러그인 형태로 호출한다. ==== PhoneGap 지원 Device API ==== PhoneGap 에서는 기본적으로 다음과 같은 디바이스 API를 제공하여 디바이스 하이브리드 어플리케이션을 통한 디바이스의 고유기능의 호출을 지원한다. ^PhoneGap Device API^개요^ |Button|설명| |Accelerometer |디바이스 모션 센서 접근(현재 가속도 정보등등) | |Camera |디바이스의 기본 카메라 어플리케이션에 접근 | |Capture |장치의 오디오, 이미지 및 비디오 캡처 기능에 대한 액세스를 제공| |Compass |디바이스 포인팅 방향 정보 처리| |Connection |디바이스의 cellular, wifi 정보 접근 (호스트 네임등등) | |Contacts |디바이스의 연락처 데이터 베이스에 접근(연락처 만들기, 검색등등) | |Device |디바이스 H/W S/W 정보에 접근 (디바이스명, 플랫폼버전등등) | |Events |폰갭이 모두 로드 되었을때, 딱 한번 deviceready 메소드를 수행한다. (엔트리 포인트 . .) | |File |파일 시스템 계층의 읽기, 쓰기, 탐색등의 기능 제공| |Geolocation |디바이스 GPS센서에 접근 (현재 위치등등) | |Media |디바이스의 오디오 파일을 저장하고 기록할 수 있는 기능을 제공| |Notification |영상 음성, 진동등을 통한 알림 제공. (alert, confirm, beep, vibrate등등을 발생 시키는 . .) | |Storage |디바이스 스토리지에 대한 접근을 제공| ==== PhoneGap License ==== PhoneGap은 아파치 코르도바 라는 이름으로 아파치 소프트웨어 재단에 기부되었다. 아파치 재단에 의해 PhoneGap은 아파치 라이선스 2.0 버전을 가지고 있는 오픈 소스이다.\\ PhoneGap 라이선스는 다음 URL을 참고한다. http://www.phonegap.com/about/license ==== PhoneGap 지원 플랫폼 (호환성)==== PhoneGap을 활용한 디바이스 별 지원 플랫폼은 다음 URL을 참고한다. 각 디바이스 API 별 상세내용은 Device API Doc 내용을 참고할 수 있다. http://www.phonegap.com/about/feature ==== PhoneGap 참고사항 ==== === 크로스 도메인 활용 (Domain Whitelist Guide) === 폰갭에서는 모든 네크워크 접속을 차단하는 보안 정책을 기본으로 사용하고 있다. 개발자는 특정 도메인이나 하위 도메인으로 접속하여 외부자원을 사용해야 할 경우 아래의 내용을 참조하여 설정 가능하다. === Android === * Res/xml/config.xml에서 외부 도메인을 선언하여 외부 자원의 사용을 위한 도메인을 추가 설정할 수 있다. /* 서브 도메인에 관한 설정 */ /* 모든 도메인에 대한 접속 허용 설정 */ === iOS === * Supporting Files/config.xml에서 외부 도메인을 선언하여 외부 자원의 사용을 위한 도메인을 추가 설정할 수 있다. ===== 참고자료 ===== * http://www.phonegap.com/