2011년 11월 30일 수요일

android OpenJDK vs Sun JDK build

Ubuntu 11.10 업데이트 후 자동으로 설치되었는지 확인은 되지 않지만 OpenJDK가 설치 되어 있습니다.

android build시 gingerbread까지는 OpenJDK로 build하여도 문제가 없는데 ICS build시 아래와 같은 에러가 발생합니다.


error: error reading out/target/common/obj/JAVA_LIBRARIES/core-tests_intermediates/javalib.jar; invalid header field
1 error
make: *** [out/target/common/obj/APPS/FrameworksCoreSystemPropertiesTests_intermediates/classes-full-debug.jar] 오류 41

googling 하여 보니 OpenJDK로 build는 가능하나 Sun JDK를 사용하기를 권장하는 것 같습니다.

synatic에서 OpenJDK를 삭제하시고 Sun JDK로 설치하시고


[~/projects/ICS]$ sudo update-alternatives --config jar
[sudo] password for codewalker:
대체 항목 jar에 대해 (/usr/bin/jar 제공) 2개 선택이 있습니다.

  선택       경로                           우선순  상태
------------------------------------------------------------
* 0            /usr/bin/fastjar                  100       자동 모드
  1            /usr/bin/fastjar                  100       수동 모드
  2            /usr/lib/jvm/java-6-sun/bin/jar   63        수동 모드

기본 사항[*]을 사용하려면 엔터, 다른 것을 사용하려면 번호를 입력하십시오: 2

jar도 위와 같이 java-6-sun/bin/jar를 선택하십시오.



http://groups.google.com/group/android-building/browse_thread/thread/f82cc424d451e409/91e29dac50ee1970?show_docid=91e29dac50ee1970

아직도 ICS AOSP가 빌드가 되지 않고 있습니다.


Preparing output jar [/home/codewalker/projects/ICS/out/target/common/obj/APPS/WAPPushManager_intermediates/proguard.classes.jar]
  Copying resources from program jar [/home/codewalker/projects/ICS/out/target/common/obj/APPS/WAPPushManager_intermediates/classes.jar]
target Java: FrameworksServicesTests (out/target/common/obj/APPS/FrameworksServicesTests_intermediates/classes)
target Dex: android.core.tests.libcore.package.com.no-core-tests-res
target Dex: android.core.tests.libcore.package.dalvik.no-core-tests-res
target Dex: android.core.tests.libcore.package.libcore.no-core-tests-res
target Dex: android.core.tests.libcore.package.org.no-core-tests-res
target Dex: android.core.tests.libcore.package.sun.no-core-tests-res
target Dex: android.core.tests.libcore.package.tests.no-core-tests-res

이 단계에서 top을 해 보면 java가 몇개 돌고 있고 메모리를 거의 다 사용하고 있어서 시스템이 거의 동작하지 않고 build 역시 안되는 것 같습니다. 여기서 해결이 안되네요. ㅡㅡ;

https://groups.google.com/group/android-building/browse_thread/thread/1d01d0cd635c7f9e

여기 설명대로 -j 옵션을 없애니 컴파일이 계속되네요. 이해가 안가네요.

결과 Ubuntu 11.10 최신 버전을 사용하고 있었는데 OS가 문제가 있어서 다시 설치해야 하서 결국 Google에서 recommend하는 10.04로 재설치 하였습니다.

그런데 package/app들 build하다가 아래 링크의 설명 처럼 에러가 발생합니다.


fix "bad class file error" android build error



http://rxwen.blogspot.com/2011/08/fix-bad-class-file-error-android-build.html

eclipse를 설치하고 나면 jar가 fastjar로 바뀝니다.
그래서 결국 android ICS build 하려면 jar를 다시 설정해 주셔야 합니다.

댓글 쓰기