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 17580
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 15960
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 18590
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 24156
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 25530
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 20904
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 41486
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 176811
303 [FireDAC] FireDAC에 대한 궁금증을 FAQ를 통해 해결해 보세요. file 험프리 2017.02.14 520
302 이 달의 기술자료 - 2018년 06월 file 험프리 2018.05.25 520
301 Tools API를 사용해 IDE를 확장할 수 있습니다. file 험프리 2017.07.20 520
300 [도서/PDF/소스코드] 델파이 Begin...End - 16장. DataSnap 웹 관리자 2019.08.20 519
299 iOS 배포 시 에러 해결방법: Cant' start debugserver on device - device support image was not mounted 관리자 2019.07.17 519
298 윈도우 & 리눅스에 RAD서버 손쉽게 배포하기 관리자 2021.04.12 518
297 네이티브로 IOS 월렛 개발하기 (델파이, C++빌더) 관리자 2021.03.02 518
296 델파이 개발자용 웹 개발 기술들 비교 및 평가 (Evaluating Web Development Frameworks for Delph) file 관리자 2020.11.17 518
295 VCL 앱, 윈도우 10용으로 현대화하기 관리자 2019.09.25 518
294 [오브젝트 파스칼을 처음 접하는 사람들을 위한] 무료 튜토리얼 비디오 (DEREK BANAS) 관리자 2021.05.25 517
293 [오픈소스] VerySimple.Lua file 험프리 2017.09.01 517
292 10.1 베를린 부터는 리본 컨트롤을 겟잇 패키지 매니저에서 설치할 수 있습니다. 험프리 2016.05.27 517
291 [10.3 리오][업데이트1] 재설계한 RAD서버 콘솔 UI : API 분석 용이 & Ext JS로의 마이그레이션 지원 관리자 2019.02.22 516
290 이 달의 기술자료 - 2016년 04월 file 험프리 2016.03.28 515
289 [시애틀] iOS 64bit와 유니버셜앱을 만들고 디바이스에서 디버깅할 수 있습니다. Humphery 2015.09.04 513
288 [10.4 시드니 신기능] 고해상도 DPI용 VCL 콘트롤(들) 관리자 2020.06.04 512
287 [도서/PDF] 한 번에 개발하는 안드로이드&iOS 앱 with 델파이 1편 - 2장. 첫번째 모바일 앱 만들기 관리자 2020.02.04 512
286 이 달의 기술자료 - 2018년 11월 file 험프리 2018.10.26 512
285 [10.4 시드니][업데이트 2] TCONTROLLIST – 새로운 VCL 컨트롤 관리자 2023.03.09 511
284 이 달의 기술자료 - 2017년 07월 험프리 2017.07.03 511