saltfactory's blog


Appspresso를 사용해서 iPhone 과 Android 앱 동시에 개발하기 - 6. 디바이스로 빌드하기

서론

Appspresso를 사용해서 하는 하이브리드 앱 개발은 대부분 디바이스 없이 진행 될거라고 예상이 된다. Xcode의 console이나 Android의 logcat 등으로 디버깅을 할 수 없기 때문에 유일하게 디버깅할 수 있는 것이 Appspresso의 on the fly이다. 다행이 Appsrpess 1.1 부터는 크롬 브라우저의 확장으로 ADE(Appspresso Debugging Extension)을 사용할 수 있지만 이것 역시 web inspector로 웹의 자원만 디버깅 할 수 있다. UI Framework 테스트를 하기 위해서 Sencha 2 touch를 시뮬레이터에서 테스트를 하고 실제 단말기로 로드했는데 시뮬레이터에서는 이상 없었던 버턴 이미지가 최초 로드가 늦게 되어서 찌그러지는 것을 확인할 수 있었다. 이렇게 단말기는 시뮬레이터와 메모리도 다리그 프로세서도 차이가 많이 나기 때문에 반드시 디바이스에 설치해서 동작하는 것을 확인 해야만 한다. 아쉽게 Appspresso에서 네이티브 레벨의 디바이스 디버깅은 될 수 없는 것 같다. 그럼 Xcode를 사용하지 않는데 어떻게 앱을 디바이스로 설치할 수 있을까? Appspresso는 eclipse 기반으로 만들어져있기 때문에 android 앱을 android 디바이스로 설치하는데 큰 어려움이 없지만 iOS 디바이스는 상황이 좀 다른다. iOS는 Xcode를 가지고 개발할 수 있기 때문에 Xcode 없이 iOS 디바이스로 앱을 빌드하여 런칭시키는 것이 어렵기 때문이다. Appspresso에 내부적으로 command line tool을 이용해서 .ipa (DRM이 되어 있는 iPhone App) 파일을 빌드하여 iTunes에 추가하여 iPhone과 자동 동기화를 실행하여 iPhone으로 설치하는 과정으로 처리한다.

Continue Reading

Appspresso를 사용하여 하이브리드앱 개발하기 - 5.PDK(Plugin Development Kit)를 이용하여 네이티브 코드 사용

서론

이번 포스팅은 두가지 관점에서 포스팅을 한다. 하나는 앞에서 사용한 ax.ext.net 대신에 네이티브코드로 원격 데이터를 요청하는 것이고 다른 하나는 Appspresso에서 Native Code를 사용하는 것이다. Hybrid의 최고의 약점은 바로 브라우저에 내장되어 있는 javascript 엔진이다. 사실 그 성능에 대해서는 정확한 벤치마킹이 있어야하지만 보통 네이티브에서 처리하는 것이 webkit의 자바스크립트로 처리하는 것보다 성능이 좋다고 알려져 있다. 이러한 이유로 하이브리드 앱에서 성능이 요구되는 일은 네이티브 프로그램으로 처리하길 원하게 될 것이다. 그래서 Appspresso에서 네이티브 코드를 사용할 수 있게 하는 PDK (Plugin Development Kit)을 어떻게 사용할 수 있는냐는 것을 바탕으로 이전에 포스팅한 예제를 ax.ext.net 플러그인 대신에 네이티브 코드로 URL을 요청을 하는 방법에 대해서 포스팅 한다.

Continue Reading

Appspresso를 사용하여 하이브리드앱 개발하기 - 4.ADE(Appspresso Debug Extension)으로 디버깅하기

서론

Appsresso가 1.0.1 버전으로 포스팅을 하고 있는 중에 주말에 1.1로 업데이트가 되었다. 1.1 부터 약간 설정하는 패널이 변경되었지만 사용방법은 대부분 비슷한것 같다. 기르고 1.1 부터는 언어 지역화를 지원하고, Appspresso의 IDE (이클립스 IDE)의 패널에서만 logging을 확인하는 것 말고도 Chrome Extension으로 Appspresso Debug Extension을 제공하고 있다. 지역화에 대한 테스트는 다음에 포스팅하기 하고 이 포스팅에서는 ADE 에 대한 사용 방법을 간단히 포스팅 한다.

Continue Reading

Appspresso를 사용하여 하이브리드앱 개발하기 - 3.원격데이터 요청하기

서론

Appsresso를 프로젝트에 적용하기 위해서 필요한 기능을 먼저 테스트해보기로 했다. 아마도 서버 프로그램과 데이터베이스를 사용하여 프로젝트를 많이 하는 우리 연구소에서 첫번째로 필요한 기능은 서버로 데이터를 전송하고 데이터를 받아오는 것일 것이다. Appspresso는 하이브리드 앱 개발을 할 수 있는 프레임워크이다. 이 하이브리드라는 말 속에서는 “웹” + “네이티브” 라는 특징이 포함되어져 있다. 그래서 이번 테스트는 두가지 방법으로 테스트를 한다. 바로 “웹” 프로그램으로 서버에 데이터를 요청하는 방법과 “네이티브” 프로그램으로 서버에 데이터를 요청하는 방법이다. 이번 포스팅에서는 웹 프로그램으로 서버에 데이터를 요청하는 방법을 포스팅하고 다음 포스팅에서는 Appspresso의 PDK(Plugin Development Kit)을 사용해서 사용자 정의 Plugin을 만들어서 네이티브 프로그램으로 서버의 데이터를 요청하는 방법을 포스팅하겠다.

Continue Reading

Appspresso를 사용하여 하이브리드앱 개발하기 - 2.On The Fly로 디버깅하기

서론

개발할 때 빌드 시간이 오래 건린다면 여러분은 어떻게 하시겠습니까? 오랫동안 개발 연구하면서 가장 큰 고민거리 중에 하나이다. PC 성능은 점점 좋아지고 클래스 API 는 점점 덩치가 커지면서 프로그램의 변경 사항을 한번 확인하기 위해서 컴파일 시켜서 기다리는게 너무나 지루한 싸움이기 때문이다. 그러한 이유로 토이 프로젝트를 진행할 때는 컴파일러가 따로 필요없이 인터프리터만 지원하면 개발할 수 있는 Ruby, Phython을 대부분 사용하고 있다. Xcode는 그나마 다행히 Android의 빌드 시간보다 짧다.(같은 라인코드 수라고 가정했을 경우). Appspresso의 IDE는 eclipse를 기반으로 만들어진 Java-based IDE 이다. 더구나 javascript와 deviceapi 를 내부적으로 패키징하여 .ipa나 .apk 파일을 만들어 내는데 한번 빌드하게되면 그 시간이 엄청나다. 처음에 Hello world를 우린 같이 살펴봤는데, 아마 실행하기 위해서 한번 빌드하고 나서 소감이 어떠했는가? 아마도 이정도의 빌드 속도라면 “Hello World”를 “Good bye World”로 단순히 글자만 변경해도 다시 빌드를 해야한다고 생각하면서 빌드 시간의 공포에 Appspresso를 두번다시 사용하기 싫다고 실망했을거라 예상된다. 처음 android의 emulator를 빌드,런을 하면서 거의 울먹거리며 한숨을 쉬었던 경험을 바탕으로 생각해보면 빌드의 시간은 프로덕트를 생산하는 생산성에 아주 큰 영향을 미친다. 다행히도 Appspresso는 웹 리소스의 변화를 감지해서 우리들히 데스크탑에서 새로 고침을하면서 php를 개발하듯 동일한 인터페이스를 제공해준다. 즉, 한번만 빌드해서 실행시켜두고 웹 자원에 변경이 일어면 빌드를 새로하는 것이 아니라 새로 고침을 할 수 있게 해주는 것이다. 이런 기능을 on the fly이라고 한다.

Continue Reading