레이블이 eclipse인 게시물을 표시합니다. 모든 게시물 표시
레이블이 eclipse인 게시물을 표시합니다. 모든 게시물 표시

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를 다시 설정해 주셔야 합니다.

2010년 6월 24일 목요일

Launcher를 eclipse에서 빌드 하기

git에서 소스를 받으면 Launcher가 있습니다.
하지만 Eclipse에서 빌드가 되지 않습니다.

그래서 Eclipse에서 빌드하는 방법을 알아 보겠습니다.

android를 빌드 할 수 있는 Linux Host PC가 있어야 합니다.
환경 설정이 끝나면 빌드를 해 둡니다.

Eclipse에서 Launcher란 프로젝트를 생성하고 [git folder]\packages\apps\Launcher 폴더의 내용을 덮어 씁니다.

main.xml이 error가 납니다. main.xml을 삭제합니다.

이제 부터 eclipse상에서 빌드 에러 나는 부분을 하나씩 정리 하도록 하겠습니다.

수정 해야 할 path는 frameworks/base/core/java 폴더 입니다.

frameworks/base/core/java/android/app/Dialog.java:998:
frameworks/base/core/java/android/app/StatusBarManager.java:29:
frameworks/base/core/java/android/app/SearchManager.java:1282:
frameworks/base/core/java/android/view/View.java:1500:
frameworks/base/core/java/android/view/View.java:1552:
frameworks/base/core/java/android/view/View.java:1560:
frameworks/base/core/java/android/view/View.java:1568:
frameworks/base/core/java/android/view/View.java:1576:
frameworks/base/core/java/android/view/View.java:1585:
frameworks/base/core/java/android/view/View.java:1593:
frameworks/base/core/java/android/view/View.java:1696:
frameworks/base/core/java/android/view/inputmethod/InputMethodManager.java:761:
frameworks/base/core/java/android/os/Vibrator.java:29:
frameworks/base/core/java/android/widget/CursorAdapter.java:53:
frameworks/base/core/java/android/content/Context.java:1240:
frameworks/base/core/java/android/content/DialogInterface.java:97:
frameworks/base/core/java/com/android/internal/util/XmlUtils.java:35:

위에 나열된 파일의 line을 보면 @hide가 있습니다. 이부분을 삭제하고 make sdk를 통해 sdk를 만듭니다.

완료가 되면 out/hos/linux-x86/sdk/android-sdk_[lang].[user]_linux-x86.zip이 생성 됩니다.

압축을 풀면 android.com에서 받은 sdk와 동일 구조의 폴더가 생깁니다.

linux에서 빌드된 sdk를 윈도우 버전으로 만드는 방법도 있습니다.

간단하게 기존 sdk에서 [android sdk root]/platforms/android-7/android.jar와 [android sdk root]/platforms/android-7/data/layoutlib.jar를 덮어씁니다.

layoutlib.jar에는 com.android.internal.util.XmlUtils와 같은 anroid.jar에 포함되지 않는 몇몇 class들이 들어 있습니다.

여기서 부터 제가 엄청 삽질 했던 부분입니다. 처음에는 Properties에서 Add JARs...를 통해 layoutlib.jar를 했었는데 아래 에러가 납니다.



Add JARs..가 아니고 Add Library...를 합니다.

아래 그림과 같이 Add Library에서 User Library를 하고 임의의 이름을 선택 후 layoutlib.jar를 선택 합니다.





그럼 몇몇 package에서 찾지 못하던 class들이 에러가 나지 않습니다.

eclipse에서 빌드는 되는데 설치 및 실행은 현재 상태로는 안됩니다. 런처를 설치 하기 위해서는 몇가지 단계가 있어 보입니다.

이 부분은 추후 수정 하도록 하겠습니다.

2010년 5월 1일 토요일

[android] Eclipse에서 android 및 java source code browsing하기기

위와 관련해서 인터넷을 검색해 보면 git로 소스를 받고 frameworks/base/java를 sdk를 받은 폴더에 sources를 만들고 java밑에 있는 파일을 sources에 복사 하면 된다고 나와 있습니다.
이전에 1.6버전일 때는 저 역시 이렇게 하면 됐던걸로 기억하고 있습니다.
하지만 2.1 sdk를 받고 eclipse에서 모든 update를 한 후에는 위에 방법으로 보여 지지 않습니다.
최신 버전으로 업데이트를 받고 나면 platform 폴더에 버전 별로 폴더가 생깁니다.



android-7 폴더에 sources를 만들고 거기에 git에서 받은 frameworks/base/core/java/android와 frameworks/base/java/com을 복사 하시면 됩니다.

그리고 반드시 환경 변수PATH에 android sdk 경로를 추가 해 주셔야 합니다.

그리고 이제 java 소스를 볼 수 있는 방법 입니다.
java를 설치 하고 나면 일반적으로 C:\Program Files\Java\jdk1.6.0_20\src.zip 파일 있습니다.
압축을 풀고 src/java폴더를 [android sdk]\platforms\android-7\sources에 복사 하여 주시면 됩니다.

위에 그림 처럼 android/com/java가 존재 하면 됩니다.

그외에 graphics와 같은 폴더도 동일하게 복사 해서 넣어 주시면 됩니다.


2010년 4월 30일 금요일

Eclipse에 java Syntax Color 변경하기

Eclipse는 Syntax Color 밋밋합니다.
Syntax Color를 변경하는 방법을 찾아서 posting합니다.





vibrantink theme를 적용한 모습니다.

여기에 vrapper plugin 도 설치하여 사용 중인데 조금 vi 스러워 졌네요.