안드로이드 개발 질문/답변
(글 수 45,052)
얼마전 에뮬에선 실행이 잘 되고 폰에선 실행이 안된다는 문의글을 올렸었는데요.
오늘 폰으로 디버깅을 해보니 아래와 같은 로그 메세지가 나오더군요..
(예전엔 왜 몰랐는지...;;;)
==============================================================================
11-27 12:19:46.348: DEBUG/ActivityManager(1112): Uninstalling process com.neocyon.minglemangle
11-27 12:19:46.348: INFO/ActivityManager(1112): Starting activity: Intent { flg=0x10000000 cmp=com.neocyon.minglemangle/.MainActivity }
11-27 12:19:46.388: INFO/ActivityManager(1112): Start proc com.neocyon.minglemangle for activity com.neocyon.minglemangle/.MainActivity: pid=2427 uid=10023 gids={}
11-27 12:19:46.458: WARN/ActivityThread(2427): Application com.neocyon.minglemangle is waiting for the debugger on port 8100...
11-27 12:19:46.468: INFO/System.out(2427): Sending WAIT chunk
11-27 12:19:47.478: INFO/System.out(2427): Debugger has connected
11-27 12:19:47.478: INFO/System.out(2427): waiting for debugger to settle...
11-27 12:19:47.678: INFO/System.out(2427): waiting for debugger to settle...
11-27 12:19:47.880: INFO/System.out(2427): waiting for debugger to settle...
11-27 12:19:48.078: INFO/System.out(2427): waiting for debugger to settle...
11-27 12:19:48.281: INFO/System.out(2427): waiting for debugger to settle...
11-27 12:19:48.478: INFO/System.out(2427): waiting for debugger to settle...
11-27 12:19:48.682: INFO/System.out(2427): waiting for debugger to settle...
11-27 12:19:48.883: INFO/System.out(2427): waiting for debugger to settle...
11-27 12:19:49.078: INFO/System.out(2427): waiting for debugger to settle...
11-27 12:19:49.278: INFO/System.out(2427): waiting for debugger to settle...
11-27 12:19:49.492: INFO/System.out(2427): waiting for debugger to settle...
11-27 12:19:49.698: INFO/System.out(2427): debugger has settled (1346)
11-27 12:19:50.638: INFO/ActivityManager(1112): Starting activity: Intent { cmp=com.neocyon.minglemangle/.GameActivity }
11-27 12:19:51.868: ERROR/dalvikvm-heap(2427): 44100-byte external allocation too large for this process.
11-27 12:19:56.358: WARN/ActivityManager(1112): Launch timeout has expired, giving up wake lock!
11-27 12:19:56.439: WARN/ActivityManager(1112): Activity idle timeout for HistoryRecord{2e48f860 com.neocyon.minglemangle/.MainActivity}
11-27 12:20:00.681: WARN/ActivityManager(1112): Activity idle timeout for HistoryRecord{2e54e718 com.neocyon.minglemangle/.GameActivity}
11-27 12:20:30.688: ERROR/Sensors(1112): close_akm, fd=84
11-27 12:20:31.208: WARN/ActivityManager(1112): Activity pause timeout for HistoryRecord{2e54e718 com.neocyon.minglemangle/.GameActivity}
11-27 12:28:29.138: DEBUG/GpsLocationProvider(1112): state: DISCONNECTED apnName: null reason: null
11-27 12:28:29.138: ERROR/ActivityThread(1175): Failed to find provider info for android.server.checkin
11-27 12:28:29.138: WARN/Checkin(1175): Can't update stat PHONE_CDMA_DATA_ATTEMPTED: java.lang.IllegalArgumentException: Unknown URL content://android.server.checkin/stats
11-27 12:28:29.168: DEBUG/GpsLocationProvider(1112): state: CONNECTING apnName: null reason: null
=====================================================================================
아무래도 메모리 문제였던 것 같습니다.
근데 이미지 로딩시가 아니라 어플 진입 후 바로 에러가 나는 것 같은데요
퍼즐형 게임 어플이라 drawble에 리소스만 1100여개가 되는터라
어플 사이즈때문에 진입이 안되나 싶기도 하고
이럴땐 어떻게 해결을 해야 하나요..
인터넷 뒤져보니 Bitmap 생성할때 static으로 선언해서 생성하면 된다길래
static으로 잡아줘도 봤는데 변함없구요..
아 이거때문에 폰에서 돌려보지도 못하고 환장하겠네요;
오늘 폰으로 디버깅을 해보니 아래와 같은 로그 메세지가 나오더군요..
(예전엔 왜 몰랐는지...;;;)
==============================================================================
11-27 12:19:46.348: DEBUG/ActivityManager(1112): Uninstalling process com.neocyon.minglemangle
11-27 12:19:46.348: INFO/ActivityManager(1112): Starting activity: Intent { flg=0x10000000 cmp=com.neocyon.minglemangle/.MainActivity }
11-27 12:19:46.388: INFO/ActivityManager(1112): Start proc com.neocyon.minglemangle for activity com.neocyon.minglemangle/.MainActivity: pid=2427 uid=10023 gids={}
11-27 12:19:46.458: WARN/ActivityThread(2427): Application com.neocyon.minglemangle is waiting for the debugger on port 8100...
11-27 12:19:46.468: INFO/System.out(2427): Sending WAIT chunk
11-27 12:19:47.478: INFO/System.out(2427): Debugger has connected
11-27 12:19:47.478: INFO/System.out(2427): waiting for debugger to settle...
11-27 12:19:47.678: INFO/System.out(2427): waiting for debugger to settle...
11-27 12:19:47.880: INFO/System.out(2427): waiting for debugger to settle...
11-27 12:19:48.078: INFO/System.out(2427): waiting for debugger to settle...
11-27 12:19:48.281: INFO/System.out(2427): waiting for debugger to settle...
11-27 12:19:48.478: INFO/System.out(2427): waiting for debugger to settle...
11-27 12:19:48.682: INFO/System.out(2427): waiting for debugger to settle...
11-27 12:19:48.883: INFO/System.out(2427): waiting for debugger to settle...
11-27 12:19:49.078: INFO/System.out(2427): waiting for debugger to settle...
11-27 12:19:49.278: INFO/System.out(2427): waiting for debugger to settle...
11-27 12:19:49.492: INFO/System.out(2427): waiting for debugger to settle...
11-27 12:19:49.698: INFO/System.out(2427): debugger has settled (1346)
11-27 12:19:50.638: INFO/ActivityManager(1112): Starting activity: Intent { cmp=com.neocyon.minglemangle/.GameActivity }
11-27 12:19:51.868: ERROR/dalvikvm-heap(2427): 44100-byte external allocation too large for this process.
11-27 12:19:56.358: WARN/ActivityManager(1112): Launch timeout has expired, giving up wake lock!
11-27 12:19:56.439: WARN/ActivityManager(1112): Activity idle timeout for HistoryRecord{2e48f860 com.neocyon.minglemangle/.MainActivity}
11-27 12:20:00.681: WARN/ActivityManager(1112): Activity idle timeout for HistoryRecord{2e54e718 com.neocyon.minglemangle/.GameActivity}
11-27 12:20:30.688: ERROR/Sensors(1112): close_akm, fd=84
11-27 12:20:31.208: WARN/ActivityManager(1112): Activity pause timeout for HistoryRecord{2e54e718 com.neocyon.minglemangle/.GameActivity}
11-27 12:28:29.138: DEBUG/GpsLocationProvider(1112): state: DISCONNECTED apnName: null reason: null
11-27 12:28:29.138: ERROR/ActivityThread(1175): Failed to find provider info for android.server.checkin
11-27 12:28:29.138: WARN/Checkin(1175): Can't update stat PHONE_CDMA_DATA_ATTEMPTED: java.lang.IllegalArgumentException: Unknown URL content://android.server.checkin/stats
11-27 12:28:29.168: DEBUG/GpsLocationProvider(1112): state: CONNECTING apnName: null reason: null
=====================================================================================
아무래도 메모리 문제였던 것 같습니다.
근데 이미지 로딩시가 아니라 어플 진입 후 바로 에러가 나는 것 같은데요
퍼즐형 게임 어플이라 drawble에 리소스만 1100여개가 되는터라
어플 사이즈때문에 진입이 안되나 싶기도 하고
이럴땐 어떻게 해결을 해야 하나요..
인터넷 뒤져보니 Bitmap 생성할때 static으로 선언해서 생성하면 된다길래
static으로 잡아줘도 봤는데 변함없구요..
아 이거때문에 폰에서 돌려보지도 못하고 환장하겠네요;
2009.11.27 14:01:47
참고하세요. 제 경우 테스트할때 어플에 리소스 크기는 이용가능한 메모리만큼 넣을수 있었습니다.
#df
해보세요.
HTC hero 로 테스트 할때도 이용가능한 메모리가 없어서 큰 용량의 어플은 올라가다가 fail 떨어집니다.
물론 이용가능한 메모리 용량만 크다면 다 올라가는 것 같습니다.
저는 이클립스에서 단말 연결한 상태로 바로 실행한후 ,
adb shell 집입한 상태로 df 계속 날리면서, 체크하니 이용가능한 용량이 0 에 가까워지면서 에러 나더군요.
당연히 어플 전체 다 올리지 못할 만큼의 용량만 남아있게 되니.....올리던것 다시 지워지고 기존으로 복구됩니다~
한 어플당 사용가능한 heap 메모리는 16 혹은 24 (제조사가 결정 가능)
어플의 단순 크기는 남은 메모리 용량만큼 가능한 것으로 테스트 결론 지었습니다