모바일 기기에 앱을 넣고 실행해보면 가끔 어찌된 영문인지 앱 실행 시 검은화면이 표시되고 더이상 구동되지 않는 경우가 발생합니다. 

검은화면은 앱 실행 시 오류가 발생한 경우 표시됩니다.

 

참고: 디버깅이 가능하다면, 디버그 모드(Run > Run: F9)로 실행하면 대부분의 오류 내용을 확인할 수 있습니다.

 

실행 시 발생하는 오류는 다양하지만 자주 발생하는 이슈는 아래와 같습니다.

  • FormCreate, FormShow 이벤트에 작성한 코드에서 오류 발생
  • 컴포넌트 Enable(또는 Active) 속성을 True로 설정 후 실행하면 실행 시 활성화 되고 활성화 시 오류 발생 가능
  • 필요한 라이브러리가 함께 배포되지 않은 경우
  • (안드로이드 경우)권한이 없는 기능을 사용한 앱이 구동 시 오류 발생

위 내용의 조치방법은 아래와 같습니다.

1, FormCreate(또는 FormShow) 이벤트에 작성한 코드에서 오류 발생

 

FormCreate 또는 FormShow 이벤트핸들러에 작성한 코드에서 오류가 발생하면 구동 시 검은 화면이 발생합니다.

오류가 발생하지 않도록 코드를 점검하고, 예외처리(try..except)를 추가하기 바랍니다.

 

또, 라이프사이클 이벤트를 이용해 앱 완전 구동 후 작업을 수행할 수 있습니다.

2, 컴포넌트 Enable(또는 Active)속성을 True로 설정 후 실행하면 실행 시 활성화 되고 활성화 시 오류 발생 가능

 

폼위에 올려놓은 컴포넌트도 내부적으로는 앱이 실행될때 코드가 실행됩니다. 특히 Enable과 Active 속성을 갖는 컴포넌트의 경우 앱 실행 시 활성화됩니다. 이때 컴포넌트 활성화에 필요한 정보가  설정되지 않은 경우 오류가 발생합니다.

예를 들어 DB 연결 시 DB의 경로가 플랫폼의 경로로 설정되지 않았다면, 오류가 발생할 수 있습니다.

 

이 경우, 앱이 구동된 이후 Enabled, Active 속성을 True로 변경하도록 처리하기 바랍니다.

3, 필요한 라이브러리가 함께 배포되지 않은 경우 오류가 발생할 수 있습니다.

 

데이터 연결 등 외부 라이브러리를 이용하는 경우, 외부 라이브러리 배포를 하지 않고 앱을 실행하면 구동 시 오류가 발생합니다.

 

이 경우, 배포관리자(Project > Deployment) 화면에서 필요한 라이브러리를 추가하기 바랍니다.

그리고, 플랫폼별 배포경로를 다음 링크에서 확인해 Remote Path를 설정하기 바랍니다.

팁으로 데이터 엑세스 관련된 라이브러리 파일은 Add Featured Files 기능을 이용해 추가할 수 있습니다.

4, (안드로이드 경우)권한이 없는 기능을 사용한 앱이 구동 시 오류가 발생할 수 있습니다.

 

블루투스 컴포넌트를 폼에 올리고 안드로이드에서 앱을 실행하려면 블루투스 권한을 설정해야 합니다.

 

사용 권한은 프로젝트 옵션(Project > Option > Uses Permissions)에서 설정할 수 있습니다. 

 

권한에 대한 자세한 정보는 엠바카데로 기술문서를 참고하세요.

5, 로그를 기록해 원인 파악해 보세요.

 

Log.d 메소드등을 통해 앱 구동시 호출되는 메소드 시작과 끝에 로그 메시지를 추가하고, 로그 메시지를 통해 오류가 발생한 부분을 파악해보기 바랍니다.

되도록, 논비주얼 컴포넌트의 Active, Enabled 속성은 False로 설정 후 코드상에서 활성화 하도록 조치하면 어떤 컴포넌트 활성화 시 오류가 발생하는지 알 수 있습니다.

Log.d 사용 방법은 아래의 링크에서 확인하시기 바랍니다.

기타 오류가 발생할 수 있는 경우

멀티-디바이스 뷰를 추가 후 추가한 뷰에 설정 값을 잘 못 넣은 경우

위 그림과 같이 멀티-디바이스 디자이너는 여러가지 플랫폼과 해상도에 맞는 디바이스 뷰를 추가해 폼 디자인을 다르게 구성할 수 있습니다.

 

간혹, 디자인 뿐 아니라 연결 컴포넌트 등의 속성을 추가한 뷰(위 그림에서 Android 5" Phone)에 잘못된 설정을 하고, Master 뷰에서 원인을 찾을 경우 쉽게 못찾는 경우가 있습니다.

 

위 문제의 해결책은 되도록, 연결 등의 Non-visual 컴포넌트는 데이터모듈에 추가하도록 합니다. 부득이 폼에 추가한 경우 Master 뷰에서 속성을 변경 해 추가한 뷰에서 Master의 속성을 상속받아 실행되도록 합니다.

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 17821
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 16181
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 18832
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 24404
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 25787
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 21146
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 41738
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 177043
1083 [고객사례-솔루션, 델파이] SQLGate - 데이터베이스 관리/개발 IDE 관리자 2019.12.19 479
1082 [팁] C++멀티쓰레드 활용하기: 모바일, 데스크탑 앱을 위한 멋진 UX 구현하기 관리자 2019.12.19 478
1081 VCL의 역할과 방향 - 마르코 칸투의 VCL 이야기! 관리자 2019.12.17 608
1080 [팁] 10.3 리오 버전에서 사용할 수 있는 C++ 기능들 file 관리자 2019.12.17 418
1079 델파이에서 아이콘 폰트 사용하기 험프리 2019.12.12 836
1078 Class에서 Interface 두 개 구현할 때, 이 둘이 동일한 이름의 메소드(Method)를 가지고 있다면? file 험프리 2019.12.11 685
1077 [고객사례-유틸리티, 델파이] 녹음기 앱 - Voice Recorder 관리자 2019.12.10 694
1076 [발표자료] 20191205 기술브리핑! 20분만에 파악하는 RAD스튜디오 10.3.3 file 관리자 2019.12.05 457
1075 [행사] 첫번째 "델파이 마이그레이션 DAY" 회고 험프리 2019.12.05 292
1074 기술자료 TOP 7 - 개발자들이 가장 많이 클릭한 기술자료는? (2019년 하반기) 관리자 2019.12.05 858
1073 이 달의 기술자료 - 2019년 12월 험프리 2019.12.05 387
1072 [오픈소스] 델파이 코드 커버리지 소개 file 험프리 2019.12.05 540
1071 [팁] TIniFile과 TMemIniFile 사용 험프리 2019.12.04 1497
1070 [10.3 리오][업데이트 3] 향상된 IDE 기능들 file 관리자 2019.12.03 490
1069 [10.3.3] 안드로이드 64비트 앱 빌드하기 [4] file 험프리 2019.11.27 1790
1068 [10.3 리오][업데이트 3] 엔터프라이즈 커넥터가 무상 제공됩니다 (엔터프라이즈, 아키텍트 사용 고객 한정) file 관리자 2019.11.22 652
1067 [10.3 리오][업데이트 3] RAD서버 도커(Docker) 배포 기능을 활용하세요. file 관리자 2019.11.22 1026
1066 [10.3 리오][업데이트 3] iOS 13, 맥OS 카탈리나 지원을 시작하세요. file 관리자 2019.11.22 409
1065 [10.3 리오][업데이트 3] 델파이에서 안드로이드 64비트 앱 개발이 가능합니다. file 관리자 2019.11.22 1203
1064 [10.3 리오][업데이트 3] What's NEW! 신기능 자세히 보기 file 관리자 2019.11.22 4001