공통 모바일 앱 실행 시 (비정상종료)검은화면이 표시되는 경우 조치방법
2015.07.03 01:42
모바일 기기에 앱을 넣고 실행해보면 가끔 어찌된 영문인지 앱 실행 시 검은화면이 표시되고 더이상 구동되지 않는 경우가 발생합니다.
검은화면은 앱 실행 시 오류가 발생한 경우 표시됩니다.
참고: 디버깅이 가능하다면, 디버그 모드(Run > Run: F9)로 실행하면 대부분의 오류 내용을 확인할 수 있습니다.
실행 시 발생하는 오류는 다양하지만 자주 발생하는 이슈는 아래와 같습니다.
- FormCreate, FormShow 이벤트에 작성한 코드에서 오류 발생
- 컴포넌트 Enable(또는 Active) 속성을 True로 설정 후 실행하면 실행 시 활성화 되고 활성화 시 오류 발생 가능
- 필요한 라이브러리가 함께 배포되지 않은 경우
- (안드로이드 경우)권한이 없는 기능을 사용한 앱이 구동 시 오류 발생
위 내용의 조치방법은 아래와 같습니다.
1, FormCreate(또는 FormShow) 이벤트에 작성한 코드에서 오류 발생
FormCreate 또는 FormShow 이벤트핸들러에 작성한 코드에서 오류가 발생하면 구동 시 검은 화면이 발생합니다.
오류가 발생하지 않도록 코드를 점검하고, 예외처리(try..except)를 추가하기 바랍니다.
또, 라이프사이클 이벤트를 이용해 앱 완전 구동 후 작업을 수행할 수 있습니다.
- 앱 완전 구동 후 작업 수행 하기(라이프 사이클 이벤트 / 타이머 이용) : http://blog.hjf.pe.kr/207
2, 컴포넌트 Enable(또는 Active)속성을 True로 설정 후 실행하면 실행 시 활성화 되고 활성화 시 오류 발생 가능
폼위에 올려놓은 컴포넌트도 내부적으로는 앱이 실행될때 코드가 실행됩니다. 특히 Enable과 Active 속성을 갖는 컴포넌트의 경우 앱 실행 시 활성화됩니다. 이때 컴포넌트 활성화에 필요한 정보가 설정되지 않은 경우 오류가 발생합니다.
예를 들어 DB 연결 시 DB의 경로가 플랫폼의 경로로 설정되지 않았다면, 오류가 발생할 수 있습니다.
이 경우, 앱이 구동된 이후 Enabled, Active 속성을 True로 변경하도록 처리하기 바랍니다.
3, 필요한 라이브러리가 함께 배포되지 않은 경우 오류가 발생할 수 있습니다.
데이터 연결 등 외부 라이브러리를 이용하는 경우, 외부 라이브러리 배포를 하지 않고 앱을 실행하면 구동 시 오류가 발생합니다.
이 경우, 배포관리자(Project > Deployment) 화면에서 필요한 라이브러리를 추가하기 바랍니다.
그리고, 플랫폼별 배포경로를 다음 링크에서 확인해 Remote Path를 설정하기 바랍니다.
- 모바일(iOS, Android)에서 사용자 파일 배포 및 사용 - http://blog.hjf.pe.kr/104
팁으로 데이터 엑세스 관련된 라이브러리 파일은 Add Featured Files 기능을 이용해 추가할 수 있습니다.
4, (안드로이드 경우)권한이 없는 기능을 사용한 앱이 구동 시 오류가 발생할 수 있습니다.
블루투스 컴포넌트를 폼에 올리고 안드로이드에서 앱을 실행하려면 블루투스 권한을 설정해야 합니다.
사용 권한은 프로젝트 옵션(Project > Option > Uses Permissions)에서 설정할 수 있습니다.
권한에 대한 자세한 정보는 엠바카데로 기술문서를 참고하세요.
5, 로그를 기록해 원인 파악해 보세요.
Log.d 메소드등을 통해 앱 구동시 호출되는 메소드 시작과 끝에 로그 메시지를 추가하고, 로그 메시지를 통해 오류가 발생한 부분을 파악해보기 바랍니다.
되도록, 논비주얼 컴포넌트의 Active, Enabled 속성은 False로 설정 후 코드상에서 활성화 하도록 조치하면 어떤 컴포넌트 활성화 시 오류가 발생하는지 알 수 있습니다.
Log.d 사용 방법은 아래의 링크에서 확인하시기 바랍니다.
기타 오류가 발생할 수 있는 경우
멀티-디바이스 뷰를 추가 후 추가한 뷰에 설정 값을 잘 못 넣은 경우
위 그림과 같이 멀티-디바이스 디자이너는 여러가지 플랫폼과 해상도에 맞는 디바이스 뷰를 추가해 폼 디자인을 다르게 구성할 수 있습니다.
간혹, 디자인 뿐 아니라 연결 컴포넌트 등의 속성을 추가한 뷰(위 그림에서 Android 5" Phone)에 잘못된 설정을 하고, Master 뷰에서 원인을 찾을 경우 쉽게 못찾는 경우가 있습니다.
위 문제의 해결책은 되도록, 연결 등의 Non-visual 컴포넌트는 데이터모듈에 추가하도록 합니다. 부득이 폼에 추가한 경우 Master 뷰에서 속성을 변경 해 추가한 뷰에서 Master의 속성을 상속받아 실행되도록 합니다.