XE5  테스트겸 델파이로 안드로이드 앱 하나 출시 했습니다.

겨울 시즌을 맞아 스키관련 앱을 하나 만들어 봤습니다.

 

다운로드 : https://play.google.com/store/apps/details?id=com.c2design.SKI_Portal

또는 구글 play : 스키1314 검색  (무료)

 

 

마켓_1024x500.png

 

 

 

[시스템구성 및 데이터처리]

대용량 데이터를 다루는것은 아니지만 Datasnap의 성능은 괜찮아보입니다.

기존 스마트폰 앱은 거의 xml 방식으로 데이터를 주고 받았는데

파싱등의 자잘한 작업에 버그도 많이 생기고 시간도 많이 걸리는 불편함이 많았죠.

 

 

Datasnap을 사용하면 클라이언트(단말기)에서 작업할 부분이 상당부분 감소되는 효과가 있습니다.

당연 개발속도도 빨라지고 오류도 적어지겠죠.

모바일 특성상 TCP 방식보다는HTTP 방식이 나아 보입니다만 구성하기 나름입니다.

날씨데이터는 기상청 공공서버에 직접 접속해서 xml로 가져오는데 3일예보 같은 경우는 데이터도 많지만 느린 이유는 공공서버 xml 구성이 불필요한 데이터가 너무 많네요.

Datasnap 서버에 관련 데이터를 미리 모아 놓고 단말기로 내려주면 해결은 됩니다. 일단 놔뒀습니다.

 

 

웹서버에서 TIdHTTP 로 스트림이나 파일 가져오는 방식은 기존윈도우 개발 방식과 똑같은 방식으로 하면 잘 됩니다.

IXMLDocument 사용해서xml 데이터 가져오는것 역시 마찬가지구요.

환경변수등 간단한 데이터는 로컬 단말기에 굳이 SQLite 사용하지않고 파일처리 하면 심플합니다.

과거에 IniFiles 많이들 써보셨을텐데..모바일 환경에서도 요긴하게 쓰입니다.

큰 차이는 없지만 속도도 더 빠르겠죠.

 

 

 

 

[화면]

화면 대부분 ListBox를 동적생성해서 사용했는데 터치시 반전 효과가 안뜨는등 약간의 문제가 좀 있습니다.

제가 방법을 모르는 것일수도 있구요.

화면 전환은 Form이 아닌Panel을 사용해서 visible TRUE/FALSE로 전환 했습니다.

좋은 방법인지는 모르겠지만 일단 잘 돌아 갑니다.

Visible TRUE/FALSE 대신 AnimateFloat 이용해서 요즘 유행하는 슬라이드 방식을 적용해도 될것 같습니다.

 

 

특히 AnimateFloat 함수는 여러모로 쓸모가 많습니다.

아날로그 온도계 바늘 돌아가는것이나 슬로프에서 리프트 오버레이 되는 기법 역시 이것으로 다 됩니다.

다만 Animation 끝나는 시간에 이벤트를 잡지 못해서 이부분은 주의해야 됩니다.

끝나는 이벤트 잡으려면 타이머을 일일이 달아줘야 하는데 불편하죠...관련함수가 추가 되기를 바랍니다.

 

 

슬로프 맵을 보여주는 화면은 2D 화면이지만 3DViewpoint를 사용했습니다.

이미지 이동과 확대 축소가 카메라 좌표와 앵글변환만으로 쉽게 처리 되기 때문입니다.

스크린 사이즈가 제각각인 안드로이드폰에 적합한 방식이 될것 같습니다.

 

 

하지만 제스쳐를 사용하는 멀티터치에 문제가 좀 있습니다.

멀티터치와 마우스 터치 이벤트를 동시에 적용하면 지멋대로 동작합니다.

따라서 Zoom Pan을같이 써야 하는경우 이벤트가 분리가 안되서 제대로 쓸수 없죠..

이부분은 iOS 지원했던 XE2 부터꾸준히 문제제기가 되었는데 해결이 안되고 있네요.

 

 

 

[하드웨어제어]

하드웨어를 콘트롤 하는 부분은 전화걸기와 네트워크 상태 체크하는 정도인데..

전화걸기는 데모소스가 나와있고 네트워크 체크하는것은 아래 게시판에 제가 올려두었던 함수를 그대로 사용했습니다.

GPS를 사용해서 본인위치를 보여주는 기능을 넣었으나 GPS만 사용하면 어플이 불안해지더군요.

메모리 누수가 좀 있는것 같습니다. 그래서 방법을 찾기 전에는 아쉽게도일단은 제외 했습니다.

이는 안드로이드 단말기 특성 일수도 있을 것 같구요…iOS에서는 비교적 잘 되는 것 같습니다.

GPS 기능이 꼭 필요한 경우 세심한 테스트가 필요해 보이네요.

 

 

 

[로딩]

어플 실행 시키면 화면 나올때까지 블랙스크린이 4초 정도 보입니다.

테스트 단말기는 많이 느린 갤럭시노트1 이고 갤럭시 3이후 부터는 크게 신경 안쓰일정도 입니다.

iOS 경우는 로딩중에 이미지를 보여줄수 있었으나 안드로이드는 이게안된다고 합니다.

(DavidI 에게 메일을 보내서 문의 하였더니 친절히 알려 주셨네요.)

스플래쉬 폼을 메인 폼대신 먼저 띄울수는 있으나 그렇다고 시간이 줄어드는 것은 아니구요..

메인폼 띄우기전 OnCreate 에서 많은작업을 할때는 유용할수 있을것 같습니다.

가급적 OnCreate 에서 초기작업을 하지 말고 폼생성 이후에 하는 요령이 필요 하겠습니다.

 

 

또한 어플 종료후에 곧바로 다시 실행시키면 실행이 안되고 튕기는 문제가 있습니다.

그리고 어플 띄워놓은 상태에서 화면 꺼진후에 다시 켜면 역시 블랙스크린이 뜨는 경우가 자주 있습니다.

화면이나 백버튼을 한번 터치 해주면 그제서야 어플이 켜집니다.

위 두가지 문제는 심각한 것은 아니나 사용자가 짜증날수 있으므로 해결되길 바랍니다.

 

 

[배포]

배포는 큰 문제는 없으나 릴리스 버전 생성시 매니페스트 파일에 인터넷사용 옵션을 추가해도 적용이 안되는 버그가있어 매니페스트 파일을 직접 수정해야 됩니다.

버그리스트에 올라와 있던데 이번 업데이트때 반영 되었는지는 모르겠네요.

 

어플 용량이 좀 큽니다. 기본폼 하나 띄워도 20MByte가 넘더군요. 이것저것 넣으면 30M는 후딱 넘어갑니다.

뭐 어쩔수 없다고 하니 감수해야 할 것 같군요. 참고로 구글 Play 앱 용량제한은 4G 로 알고 있습니다.

요즘 보니 뱅킹 같은 앱은 대부분 20M는 쉽게 넘어 가더군요.

 

 

 

[크로스플랫폼 및 개발환경]

iOS 버전은 약간의 화면 작업과 네트워크 체크하는 부분만 별도로작업해주면 바로 릴리스가 가능하나 iOS 버전은 이전에 테스트를 많이 해봐서 굳이 따로 배포하지는 않을 예정입니다.

 

개발작업시 데이터 체크 같은 것은 윈도우용으로 돌려가며 테스트하니 편합니다..컴파일이 워낙 빠르니..

다만 윈도우용으로 배포버전을 만들면 화면작업은 상당부분 별도로 해줘야 할겁니다.

특히 Listbox 같은 경우DetailText는 아예 안보이니 다르게 처리해야 합니다.

폰트크기도 제각각이고

개발 단말기는 빠른 것 보다는 느린 것이 더 나을수 있습니다. 안보이던 버그가 잘 보입니다..^^

다만 단말기에 디버깅 걸면 좀 답답하긴하네요.

단말기 여러대 물려놓고 개발이 가능하니 상황에 맞게 작업하면 되겠죠.

 

 

 

앱 관련 해서 문의 사항있으면 이곳이나 파어어몽키 카페에 언제든지 질문 올려 주세요.

파이어몽키 카페 : http://cafe.naver.com/delphifmx

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 25126
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 23429
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 25419
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 31325
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 32324
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 27747
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 48794
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 185766
303 안드로이드 앱 서명 및 배포 file Humphery 2014.01.02 10428
302 파이어몽키 모바일에서 사용자 파일 배포 및 사용 file 험프리 2013.12.27 6334
301 FM(파이어몽키) 애플리케이션에서 StyledSettings 활용하기 관리자 2013.12.27 2716
300 Hotfix 3: RAD Studio XE5, Delphi XE5 업데이트2 다운로드 관리자 2013.12.27 3745
299 [XE5만의 특별한 기능] 응답하라! Delphi VCL 개발자 관리자 2013.12.21 4937
298 Runtime Packages 옵션으로 프로그램(배포) 용량 줄이기 [4] file Humphery 2013.12.19 7932
297 파이어몽키에서 미디어 플레이어 개발 관련 Humphery 2013.12.18 6713
296 안드로이드 API를 파이어몽키에서 사용하기(Toast 메세지 구현) file Humphery 2013.12.17 6323
295 XE5용 업데이트2 가 공개되었습니다. 관리자 2013.12.16 3374
294 웹상의 이미지를 폼(TImage)에서 사용하는 방법 [3] file Humphery 2013.12.14 11964
293 Delphi XE5 and RAD Studio XE5 Android and iOS Code Samples Humphery 2013.12.14 9415
292 iOS 에서 C++ 지원 XE5 Update 2 가 공개되었습니다. minders 2013.12.13 3933
291 Hotfix 2 공개: RAD Studio XE5, Delphi XE5, C++Builder XE5 관리자 2013.12.05 3708
290 ComPort(시리얼 통신) 컴포넌트 설치안내 [11] file 험프리 2013.12.04 113271
289 11월 26일 "RAD Studio XE5 따라잡기: 모바일 개발 퀵스타트 LIVE!" 발표자료입니다. file 관리자 2013.12.03 3637
288 엔터프라이즈 데이터 기반의 모바일 앱 과정(2일) 우선 등록 안내 관리자 2013.11.21 2754
287 RAD Studio XE5 와 C++Builder XE5, All-Access XE 사용 고객을 위한 Hotfix 1 이 공개되었습니다. 관리자 2013.11.08 3773
» [개발보고] 델파이 안드로이드 앱 출시 기술정보 [7] file c2design 2013.11.08 7170
285 델파이 안드로이드앱에서 jar 클래스 사용하기 file 관리자 2013.10.31 5404
284 Help Update 1 : RAD Studio XE5, Delphi XE5, C++Builder XE5 관리자 2013.10.31 3529