아름프로의 Agile, DevOps, 그리고 일상 이야기

Rational 제품에서 Android SDK 사용하기 본문

IT 이야기

Rational 제품에서 Android SDK 사용하기

아름프로 2009. 6. 5. 20:53
한동안 너무 툴에만 빠져 산듯하여, 원론 중심의 책들을 한동안 좀 미친듯이 봤습니다. (책상을 침대삼아.ㅎㅎ)
그런데, 이 역시도 후유증이 도졌는지 진도도 더디고 몸도 상태가 말이 아니고. ^^;
겸사겸사 오늘은 분위기 전환차 개발쪽을 잠시 들여다 볼까하고 Android SDK를 설치하고 이것저것 보기로 했습니다.

테스트 대상으로는 RTC 2.0 Beta2 위에 Android 1.5 r2 를 올려보는 것으로 시작했습니다.
설치는 이전에도 잠시해본 사항이라, 어렵지 않게 휭~하니 지나갔습니다.

설치를 마치고, 가벼운 마음으로 Hello World에 대당하는 HelloAndroid를 진행. ~~

간단한 내용이라 쉽게 작업완료.

허나!! 실행을 하고 멋지게 짠하고 나타줘야할 애뮬레이터가 나타나지 않은 채, 실행 오류발생
[2009-06-05 18:01:43 - HelloAndroid] ------------------------------
[2009-06-05 18:01:43 - HelloAndroid] Android Launch!
[2009-06-05 18:01:43 - HelloAndroid] adb is running normally.
[2009-06-05 18:01:43 - HelloAndroid] Could not find HelloAndroid.apk!

황당한 마음을 달래며, 검색을 해보니 이미 이러한 오류들에 대한 글들이 좀 올라와 있어 살펴보았습니다.
해결책이라고 나온 방법이, 제어판에서 전체 언어를 영어[미국]으로 변경하고, debug.keystore 파일 삭제하고 프로젝트 새로 생성해서 하면 된다나 어쩐다나.... 내용 참고하여 이런저런 해보아도 여전히 문제 발생 ㅡㅡ;;; (1시간여 삽질 ~~)

욱~하는 마음 달래고 밥먹고와서 천천히 다시 진행 ~.
우선은 Rational 제품이 아닌, 순정(!) Eclipse 최신 Classic 버젼인 eclipse-SDK-3.4.2-win32 를 받아 Android SDK 올려서 테스트. => 성공!!

@ 차이 분석 : 자체 플러그인들의 일부 다른 버젼을 쓴다는 점, JDK 를 다른 것을 쓴다는 것.

RTC 환경에서 컴파일러 디폴트인 IBM JDK 대신에 Sun(!) JDK로 지정해서 다시 시도
=> 역시나 실패! 제길 ~~ ㅡㅡ;;

이상하다 싶어, 로그화인 .metadata 디렉토리의 .log 파일 점검 .. 역시나 에러 발견.
!ENTRY org.eclipse.core.resources 2 75 2009-06-05 19:45:33.965
!MESSAGE Errors during build.
!SUBENTRY 1 com.android.ide.eclipse.adt 2 75 2009-06-05 19:45:33.965
!MESSAGE Errors running builder 'Android Package Builder' on project 'Hellooo'.
!SUBENTRY 1 com.android.ide.eclipse.adt 2 75 2009-06-05 19:45:33.965
!MESSAGE sun.security.x509.X500Name
!STACK 0
java.lang.NoClassDefFoundError: sun.security.x509.X500Name
    at com.android.jarutils.SignedJarBuilder.writeSignatureBlock(SignedJarBuilder.java:309)
    at com.android.jarutils.SignedJarBuilder.close(SignedJarBuilder.java:227)
    at com.android.ide.eclipse.adt.build.ApkBuilder.finalPackage(Unknown Source)
    at com.android.ide.eclipse.adt.build.ApkBuilder.build(Unknown Source)
    at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:633)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201)
    at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256)
    at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309)
    at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341)
    at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140)
    at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: java.lang.ClassNotFoundException: sun.security.x509.X500Name
    at org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:483)
    at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:399)
    at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:387)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:87)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
    ... 16 more

Android 개발환경이 빌드를 위해서 keytool를 이용한 debug.keystore 생성한다 싶더니만 역시나 관련 라이브러리 필요.
결국엔, 컴파일 때가 아닌 RTC 런타임에 SDK 선택 적용 필요.

TeamConcert.ini 파일에서 VM 버젼 선택 부분 삭제
-vm
jdk\jre\bin

다시 HelloAndroid 실행 ==> 성공 !!



오~~, SDK라고해서 껌대기만 있을꺼라 생각했는데, 생각보다 구현된 내용이 많네요. ^^ (기능도 잘 동작)
(다양한 설정들도 잘 갖추어져 있고 ... 추후 다시한번 봐야겠네요. 어쨌든, 구글폰/안드로이드폰 이 대략 어떻게 생긴 것인지 궁금하신 분은 실행해서 사용해보시면 될 것 같네요. ^^ )

어쨌든 !!!! 요약하면 이렇습니다.

Android SDK를 IBM Rational 제품 환경에서 사용하기 위해서는 일단 IBM JDK로는 동작하지 않을 수 있을 것 같습니다. 해결책으로는 Sun JDK로 설정을 변경하셔서 제품을 실행하시면 되고요.

그런데, 이상하고 궁금한 것은 ...
Google이 굳이 JDK를 Sun JDK만 사용하게 했을까? 싶다는거 ...
 
최초 IBM JDK로 동작한 RTC에서 생성한 debug.keystore 가 "sun.security.x509.X500Name"를 찾는다는 것을 봐서는 Android SDK 내부어디에선가 지정된 부분이 있지 않을까 싶네요.

이유와 내용이야 추후 좀 더 봐야겠지만, 일단 개발환경 셋팅은 이렇게 마쳤습니다. @^^@