Error occurred during initialization of VM
Could not reserve enough space for object heap
구글링 해 보니, JVM을 실행할 때, 가용 메모리보다 더 큰 메모리 설정을 가지고 실행할 때 나타난다고 한다.
인터넷에는 보통 -Xms256m -Xmx512m 옵션을 직접 주는 방법들이 나와 있어서 JAVA_OPTS 환경변수를 이용해서 설정 해 보려고 했는데 잘 되지 않았다.
그래서 안드로이드 makefile 들을 뒤져보다, definitions.mk 파일에서 위의 옵션을 설정하는 부분을 발견했다.
codeaurora에 있는 ICS소스의 definitions.mk 파일의 내용중 아래가 해당 부분이다.
1519 #TODO: use a smaller -Xmx value for most libraries;
1520 # only core.jar and framework.jar need a heap this big.
1521 # Avoid the memory arguments on Windows, dx fails to load for some reason with them.
1522 define transform-classes.jar-to-dex
1523 @echo "target Dex: $(PRIVATE_MODULE)"
1524 @mkdir -p $(dir $@)
1525 $(hide) $(DX) \
1526 $(if $(findstring windows,$(HOST_OS)),,-JXms16M -JXmx1536M) \
1527 --dex --output=$@ \
1528 $(incremental_dex) \
1529 $(if $(NO_OPTIMIZE_DX), \
1530 --no-optimize) \
1531 $(if $(GENERATE_DEX_DEBUG), \
1532 --debug --verbose \
1533 --dump-to=$(@:.dex=.lst) \
1534 --dump-width=1000) \
1535 $(PRIVATE_DX_FLAGS) \
1536 $<
1537 endef
1526번 줄에 표시된 부분을 수정하면 (수치를 낮추면) 문제가 해결된다.
다른 방법이 있을지도 모르겠는데, 우선은 임시방편으로 해결 가능하다.
'리눅스 & 안드로이드' 카테고리의 다른 글
Android 실행 바이너리 컴파일 (0) | 2012.03.17 |
---|---|
Android 빌드 명령어 (build command) (0) | 2012.02.24 |
특정 git만 가져와 gerrit 적용하는 방법 (0) | 2012.02.15 |
Signed App. 생성하기 (0) | 2012.02.06 |
PANIC: Could not open xxx.ini when starting android emulator (2) | 2012.01.26 |