오늘은 안드로이드에서 PhoneGap 에 대해 정리를 하고자 합니다.
순수 네이티브앱은 좀더 자유로운 화면구도를 만들기 어렵고, 아무래도 많은 자바 클래스가 필요하기 때문에 , 그리고 데이터를 관리하기 위한 데이터셋 클래스는 개발하는데 있어 좀 짜증나게 하는 부분이 있습니다.
더구나 아이폰, 윈도우폰 을 개발하려면 개발자가 따로 또 필요하게 되는 부분도 있습니다.
그래서 요즘 추세가 순수 임베디드 ( 서버의 웹페이지를 호출) 웹 앱으로 개발을 하는 경향이 많은 것 같습니다.
다만, 여기서 문제점이 네트워크가 끊기거나 또는 웹페이지를 호출해야 하다 보니 많이 느리다는 점입니다.
요즘, 핸드폰이 워낙 빨라져서 이런 부분은 어느정도 해소가 된 것 같고, 개발 공수의 입장에서 보면 순수 임베디드웹엡이 가장 효율적인 방법이라 생각됩니다.
다만, 웹이 sql injection 공격에 취약하다 보니 해킹의 소지가 있지만, 그 부부은 서버에서의 injection 방어코드를 넣어서 사용하게 되면 해킹 방어가 가능하고, IIS 나 WAS의 공격부분은 순순 네이티브엡이라 하여도 서버 I/F 가 있는 한 이 부분의 취약점은 동일하게 된다고 생각됩니다. 즉, 네이티브엡에서 서버 url을 숨긴다고 하여도 analyzer 나 Internet history 툴을 이용하게 되면 어디를 호출하지는 다 알 수 가 있기 때문에 결론적으로 완벽한 보안이란것은 있을 수 없게 되는 것입니다.
그래서 임베디드웹의 이 부분에 속도 부분을 어느정도 좀더 개선 시키기 위해 사용하게 되는 방법이 오늘 설명할 PhoneGap 입니다.
그리고 크로스 플랫폼이 가능하다는 아주 큰 장점도 있습니다.
물론 PhoneGap 외에 Titanium Mobile 도 있지만. 아무래도 PhoneGap 의 인지도가 높은건 사실이고 Adobe 사에 인수가 된 뒤 계속적인 플러그인개발과 오픈정책이 확고히 되고 있어 개발자에게는 아무래도 이익이 된다고 생각됩니다.
그러면 개발순서는 어떻게 될까요?
1. HTML5 기반으로 해서 html 을 코딩
2. PhoneGap 으로 감싸기
3. 크로스플랫폼으로 컴파일 및 배포
아주 간단합니다. 웹개발 능력만 있다면 그리 어렵지 않게 앱개발이 가능합니다.
기본 구조는
위에서 보듯이 app 에 webview가 포함되어 app 플러그인이 디바이스 컨트롤을 연동하게 하는 방법입니다.
디바이스 컨트롤 종류는
Accelerometer: 가속도계 사용
Camera: 사진 촬영과 사진 앨범 탐색
Capture: 동영상 녹화, 오디오 녹음, 정지 영상 촬영
Compass: 나침반 기능
Connection: 모바일 네트워크 상태 확인
Contacts: 주소록 검색 및 연락처 추가/수정/탐색
Device: 단말기, 운영체제 버전 등
Events: 하드웨어 버튼 이벤트
File: 파일 입출력, 전송
Geolocation: 위치 정보
Media: 음성 재생과 녹음
Notification: 벨 소리, 진동, 시스템 알림 메시지 등
Storage: 네이티브 DB 접근
이정도로 가능합니다.
예로 전화걸기를 한다면 웹 코드상에서
<a href="tel:01023465789">친구 전화 걸기</a>
이런식으로 컨트롤이 가능합니다.
apple 같은 경우는 예전에 PhoneGap 은 검수통과가 되지 않았었는데 지금은 등록에 문제가 없다고 합니다.
그리고 막강한 플러그인이 제공되기 때문에 확장기능이 좋다는 점이 있습니다. 즉 .NET의 framework 같은 그런 플러그인이 제공이 됩니다. (유로도 있음)
https://github.com/phonegap/phonegap/wiki
PhoneGap 으로 개발한 제품들은 아래 링크에서 볼 수 있습니다.
서버와의 데이터 흐름은 아래의 이미지에서 알 수 있습니다.
그럼 다음에는 설치 및 실제 hello world 개발을 해볼까 합니다.
기본 설치법은
여기에서 확인하시면 됩니다.
폰갭관련 사이트 모음
설치 부분이 차근차근 설명이 잘되어 있네요.
'프로그램 > Android' 카테고리의 다른 글
폰갭빌드를 command line 으로 하는거 힘들다.. PhoneGap 빌드 사이트 사용 (0) | 2021.01.14 |
---|---|
폰갭 애플 앱스토어에 등록하기 질의응답 (0) | 2021.01.14 |
빌드된 apk 파일을 서명하기 - 등록하기 위해 필요 (0) | 2021.01.14 |
[필독]AngularJS를 알아보자 (0) | 2021.01.09 |
(아주중요) 안드로이드 Timer 사용하기 (아주중요) (0) | 2021.01.09 |