woolta

cordova를 사용한 하이브리드앱 제작하기

wooltaUserImgapp | 2018-09-12

모바일 앱 제작 및 유지보수의 불편함.

모바일용 앱을 만들때 주로 안드로이드 앱, 아이폰 앱 2개를 만들게 된다.
그러다 안드로이드 와 아이폰은 개발하는 기술이 서로 다르기에 각각 네이티브로 제작할 경우 유지보수 및 개발적인 측면에서 너무 힘들다는 단점이 있다.
이를 해결하는 여러 방법 중 cordova를 사용하면 IOS, ANDROID 둘다 한번에 유지보수가 가능하다.

코르도바(cordova) 란?

아파치 재단에서 지원하는 하이브리드 앱 제작을 위한 프레임 워크다.

코르도바(cordova) 는 Andorid, IOS, window phone 를 포함한 총 8개의 플랫폼을 동시 지원한다.
그리고 PhoneGap(폰갭), Ionic(아이오닉), Monaca(모나카) 도 전부 cordova 기반이다.

|종류|설명| |----|----| |PhoneGap(폰갭)|cordova를 폰갭 컨트롤러로 패키징한 프래임 워크인데 폰갭은 유료라서 포기했다...| |Ionic(아이오닉) | Cordova를 기반으로 Auguler.js를 이용해 제작한 프레임워크이다. Auguler.js에 익숙한 사람은 아이오닉을 추천한다.|


Cordova 폴더 구조

https://image.woolta.com/3fed46ff5c61b4e8.png

위 구조에서 핵심적인 부분만 간략 설명한다.

  1. platforms : 각 플랫폼 고유 프로젝트 파일이 생성되는 부분.
  2. plugin : 코르도바 플러그인 들이 저장되는 장소
  3. www : 실제 모바일웹인 html, js , image, css 를 설정하는 부분.
  4. config.xml : 프로젝트 설정 파일로 빌드할때 각 플랫폼 별 설정파일을 만들어 준다.

실제로 웹을 작성할 경우 www폴더를 작업하면 된다.


코르도바(cordova) 샘플 앱 제작.

코르도바(cordova)를 작성하기 위해선 node.js가 필수이다. 꼭 설치하고 작업할 것.

1. 코르도바(cordova) 설치를 위한 cordova 설치

npm install cordova -g

2. 프로젝트 생성

cordova create cordovaExample com.sample.cordova cordovaSampleExample ## (cordova create 프로젝트명 프로젝트 패키지 명 프로젝트 생성 폴더명)

3. 플랫폼 추가

cordova platform add ios cordova platform add android

3.1 platforms 폴더를 보면 실제로 플랫폼 2개가 추가된걸 확인 할 수 있다.

https://image.woolta.com/3fe35ebe718e7cd6.png


4. App 실행 시켜 보기

cordova run android (cordova run 플랫폼이름)

실행 결과

https://image.woolta.com/3fc13fb22ee2a4cc.png


아이폰 Run 안될 경우

아이폰의 경우 platform-> IOS 폴더를 x-code로 열어보면 사용자 인증이 최초에 안되어 있기 때문이다.
사용자 인증 등록만 하면 바로 실행이 되는걸 볼 수 있다.

https://image.woolta.com/3fddb58a696c14da.png

Team이 None 으로 설정되어 있는데 이부분 인증 사용자로 변경해준다.


반응속도 느릴 경우 확인 사항

이부분은 웹으로 작성할땐 이벤트가 onClick인데 실제 모바일로는 onTouch로 받아들여서 반응속도가 느려질 수 있다.
이때는 FastClick 플러그인을 통해 작업하면 수월하게 해결할 수 있다. 리액트의 경우 리액트용 FastClick이 존재한다.

https://image.woolta.com/3fee5c1a60cfcb3a.png


앱 업데이트가 아닌 서버 변경만으로 앱 업데이트 시키기

앱중에 업데이트를 안했는데도 내부 디자인이 바뀌어 있는것을 볼 수 있다. 이런 부분을 코르도바에서도 구현할수 있다. 여러방법이 있으나 내가 현재 아는방법은 루트폴더에 실제 작업 프로젝트를 만들고 Grunt의 manifast를 사용해 www폴더에서 manifast정보가 바뀌면 해당 부분 실제 작업폴더에서 www폴더로 다운로드 하는 방식이다.