태그 보관물: 이클립스

이클립스 업데이트(Eclipse Update) 실패 해결

이클립스(Eclipse)는 자체만으로도 훌륭한 툴이지만, 이 툴에 추가해서 사용하는 플러그인들이 이클립스를 더 훌륭하게 만들어 준다. 이 플러그인은 자체로 업데이트를 지원하는 구조이기에 이클립스 툴에서 종종 업데이트한다. 이클립스에서 업데이트를 하는 방법은 Help -> Check for Updates 를 선택해서 확인할 수 있다.

하지만 업데이트가 잘 되다가 아래와 같은 에러가 발생하기도 한다. 아래에서 확인한 이클립스 버전은 4.4(Luna)이다.

이 에러에 대한 해결책을 찾아보니, 업데이트 목록에 있는 주소(URL)에 슬래시(/)를 추가하면 된다고 한다. 그래서 업데이트 주소 목록(Window -> Preference -> Install/Update -> Available Software Sites)을 확인해 보면 아래와 같다.

위 주소 목록에서 마지막에 슬래시(/)가 없는 주소에 슬래시를 추가하고 다시 업데이트하면 정상적으로 업데이트되는 것을 확인할 수 있다.

* 레퍼런스
http://stackoverflow.com/questions/6470802/what-to-do-about-eclipses-no-repository-found-containing-error-messages

이클립스 프로세스(eclipse.exe)와 자바 프로세스(javaw.exe) 합치기

이클립스를 실행하면 이클립스 프로세스하고 가상머신의 프로세스하고 동시에 2개가 뜨게 된다. 간혹 이클립스가 멈추는 경우에 이클립스를 종료하기 위해서 프로세스를 한꺼번에 2개 종료해야 하는 상황이 된다. 이제 안드로이드 스튜디오를 실행시키거나 자바 애플리케이션을 실행시킨 경우에 어떤 프로세스(javaw.exe)를 종료시켜야 하는지 찾는 게 불편하다. 프로세스 익스폴로러로 찾으면 쉽긴 하지만 태스크 매니저를 자주 사용하기 때문에 프로세스가 분리가 안되면 좋겠다.

찾아보니, 이클립스의 실행 옵션 파일(eclipse.ini)에서 vm 옵션을 사용해서 해결할 수 있다.

* eclipse.ini

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20150204-1316
-product
org.eclipse.epp.package.standard.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vm
C:\Program Files\Java\jre7\bin\server\jvm.dll
-vmargs
-Dgrails.console.enable.interactive=false
-Dgrails.console.enable.terminal=false
-Djline.terminal=jline.UnsupportedTerminal
-Dgrails.console.class=grails.build.logging.GrailsEclipseConsole
-Dosgi.requiredJavaVersion=1.7
-Xms512m
-Xmx2048m

위 eclipse.ini 파일에서 -vm 옵션에서 vm을 지정하면 된다. 이제 eclipse.exe 프로세스만 신경쓰면 되겠다.

* 레퍼런스
https://www.bsiag.com/scout/eclipse-exe-windows-processes/

서브라임 텍스트(Sublime Text)를 사용해서 안드로이드 로그를 확인하자.

안드로이드 로그는 로그캣(Logcat) 이라는 툴을 사용해서 에뮬레이터나 기기의 로그를 확인할 수 있다. 일반적으로 안드로이드 스튜디오(Android Studio)나 이클립스(Eclipse)의 로그캣 창으로 확인한다. 아래의 간단한 명령을 사용해서 리눅스 계열의 쉘이나 윈도의 커멘트 창에서 안드로이드 로그도 확인할 수 있다. 아래는 윈도에서 로그를 확인하는 예제이다.

C:\dev>adb logcat

하지만 위 방법으로 안드로이드 로그를 확인하는 과정은 좀 불편하다. 안드로이드 스튜디오나 이클립스에서 로그를 확인하기 위해서 로그캣 창을 조절해야 하는 불편함이 있고, 2개의 모니터를 사용하는 경우 별로도 분리해서 좀 편리하게 사용할 수 있지만 그래도 역시 불편하다.

그래서 로그를 확인하는데 텍스트 작업에 많이 사용하는 편집기로 안드로이드 로그를 확인한다면 위 IDE에서 창을 이동시키거나 2번째 모니터에 로그 창을 이동시켜 놓는 번거로운 과정이 필요 없다. 안드로이드 스튜디오는 Android Device Monitor라는 툴을 제공해서 별도로 분리할 수 있게 한다. 이 툴은 단지 로그만 확인하는 데 사용하기에는 무거운 편이라서 편집기로 확인하는 것이 좋다. 또한, 로그를 검색하거나 이동(스크롤)해서 확인하는 데 편집기가 편하다. 그래서 이 글에서는 개인적으로 많이 사용하는 텍스트 툴인 서브라임 텍스트(Sublime Text)를 사용해서 안드로이드 로그를 확인하는 방법을 살펴보자.

서브라임 텍스트 플러그인으로 안드로이드 로그를 확인할 수 있는 툴은 아래에서 확인할 수 있고, 이 플러그인을 사용하는 방법을 살펴보자.
https://github.com/quarnster/ADBView

* 필수 구성요소

1. 안드로이드 SDK와 ADB 명령이 PATH에 추가되어 있어야 한다.
2. 윈도를 사용하는 경우 텔넷(Telnet) 클라이언트가 설치되어 있어야 한다.
2.1. 확인은 아래의 명령으로 확인할 수 있다.

C:\dev>telnet


이 화면은 텔넷이 활성화된 상태이다.

2.2 설치는 아래의 위치에서 활성화 시키면 된다.
2.2.1 제어판 > 프로그램 추가 삭제 > Windows 기능 사용/사용 안함 > 텔넷 클라이언트 활성
자세한 과정은 이곳(http://ansths.tistory.com/210)을 참고해 보자.

* 설치과정

설치 과정은 Package Control Plugin을 설치하고, 플러그인을 설치해서 로그캣을 연동하는 방법이다.

1. Package Control Plugin(https://packagecontrol.io)을 설치한다.
이 플러그인을 설치하는 방법은 https://packagecontrol.io/installation 에서 확인할 수 있다. 이 페이지에서 서브라임 2, 3 버전에서 View > Show Console 메뉴를 실행해서 나오는 명령 창에, 파이썬 코드를 붙여넣기 해서 실행해서 설치한다. 이 과정의 결과는 아래 화면에서 확인할 수 있다.

그리고 설치를 완료하면 서브라임 텍스트를 재실행한다.

설치 확인은 Preferences > Package Control 메뉴를 실행해서 확인할 수 있다.

2. ADBView 플러그인을 설치하자.
Preferences > Package Control 메뉴를 실행하고, Install Package를 실행하면 패키지를 검색할 수 있다.
아래의 화면은 ADB로 검색된 패키지 목록이고, 선택된 패키지를 설치한다.

3. 로그캣 화면을 실행하자.
Tools > Command Palette…를 실행해서 ADB:Launch를 실행하면 서브라임 텍스트에서 안드로이드 로그를 확인할 수 있다.

이 화면은 필자의 에뮬레이터에 연결해서 보고 있는 로그이다.

4. 로그를 원하는 입맛에 맞게 수정하자.
로그를 원하는 형태로 보려면, 아래 화면으로 확인할 수 있는 설정파일을 수정하면 된다.

이 과정으로 서브라임 텍스트를 사용해서 안드로이드 로그를 편하게 확인할 수 있다.

* Reference

1. https://github.com/quarnster/ADBView
2. http://developer.android.com/tools/help/logcat.html

이클립스(4.4)에서 안드로이드 v7 Material Design 위젯을 사용해 보자.

안드로이드 롤리팝 버전은 기본 UI로 머터리얼 디자인(Material Design)이라는 멋진 디자인을 사용한다. 그리고 하위 버전도 이 UI를 적용한 위젯을 사용할 수 있도록 외부 라이브러리의 형태로 v7 라이브러리를 배포하고 있다. 하위 버전에서 머터리얼 디자인을 적용하는 많은 예제가 안드로이드 스튜디오(Android Studio)에서 Gradle 스크립트를 사용하도록 가이드를 하고 있다. 하지만 아직도 많은 개발자들의 안드로이드 개발에 이클립스(Eclipse)가 사용되고 있어서, 이클립스에서 머터리얼 디자인을 사용하는 방법을 살펴봤다.

v7 라이브러리( Support Library 일부 )에는 다음과 같은 하위 라이브러리 프로젝트들이 존재하고 있다.
+ v7 Support Libraries
– v7 appcompat library
– v7 cardview library
– v7 gridlayout library
– v7 mediarouter library
– v7 palette library
– v7 recyclerview library

이 예제에서는 v7 appcompat library만을 사용하는 예제이다.
이클립스 프로젝트에서 아래의 순서대로 진행을 한다.

1. v7 appcompat library를 추가한다.
v7 appcompat library 추가는 이클립스에서 File -> Import를 사용해서 다음과 같이 추가를 시작한다.

2. v7 appcompat library를 선택하고 추가한다.
위치는 Root Directory에 보는 것과 같은 위치에서 찾을 수 있다.

3. 위에서 추가한 라이브러리를 적용할 프로젝트의 Library로 추가한다.

3.1 선택을 완료하면 다음의 에러가 발생할 수도 있다.

[2014-11-19 09:34:24 – android-support-v7-appcompat] C:\dev\android-sdk\extras\android\support\v7\appcompat\res\values-v21\themes_base.xml:193: error: Error: No resource found that matches the given name: attr ‘android:colorControlNormal’.
[2014-11-19 09:34:24 – android-support-v7-appcompat]
[2014-11-19 09:34:24 – android-support-v7-appcompat] C:\dev\android-sdk\extras\android\support\v7\appcompat\res\values-v21\themes_base.xml:190: error: Error: No resource found that matches the given name: attr ‘android:colorPrimary’.
[2014-11-19 09:34:24 – android-support-v7-appcompat]
[2014-11-19 09:34:24 – android-support-v7-appcompat] C:\dev\android-sdk\extras\android\support\v7\appcompat\res\values-v21\themes_base.xml:191: error: Error: No resource found that matches the given name: attr ‘android:colorPrimaryDark’.

이 경우에는 안드로이드 SDK의 support 라이브러리등의 각종 개발환경을 최신버전으로 업데이트 한다. 만약, 계속 에러 상황인 경우에는 이클립스를 다시 실행시키면 된다.
그리고, android-support-v7-appcompat 라이브러리 프로젝트의 Manifest.xml 파일은 다음과 같다.

따라서 2.1 버전도 지원하는 것을 알 수 있다.

3.2 support v4 라이브러리 일치 문제가 발생할 수 있다.

[2014-11-19 09:56:33 – MaterialExample] Found 2 versions of android-support-v4.jar in the dependency list,
[2014-11-19 09:56:33 – MaterialExample] but not all the versions are identical (check is based on SHA-1 only at this time).
[2014-11-19 09:56:33 – MaterialExample] All versions of the libraries must be the same at this time.
[2014-11-19 09:56:33 – MaterialExample] Versions found are:
[2014-11-19 09:56:33 – MaterialExample] Path: C:\dev\android-sdk\extras\android\support\v7\appcompat\libs\android-support-v4.jar
[2014-11-19 09:56:33 – MaterialExample] Length: 995386
[2014-11-19 09:56:33 – MaterialExample] SHA-1: a13f8fe2c278737e2f0b6fcf00f6b2ae4034aacf
[2014-11-19 09:56:33 – MaterialExample] Path: C:\eclipse 4.4\works\MaterialExample\libs\android-support-v4.jar
[2014-11-19 09:56:33 – MaterialExample] Length: 987314
[2014-11-19 09:56:33 – MaterialExample] SHA-1: 9b6a9a9078af571732159b904ad423b03b7cc786
[2014-11-19 09:56:33 – MaterialExample] Jar mismatch! Fix your dependencies

이 경우에는 android-support-v7-appcompat 프로젝트의 /libs 폴더의 android-support-v4.jar를 프로젝트에 복사를 한다. 이제 다음과 같이 정상 화면을 볼 수 있다.

아래는 첨부파일을 실행한 예제이다.

이제 이클립스에서도 v7 패키지를 추가해서 머터리얼 디자인을 앱을 개발할 수 있다. 하지만 IDE 자체가 가지는 불편함도 있고 하니 안드로이드 스튜디오로 개발하는 것이 좋겠다.

* 예제 프로젝트 : MaterialExample.zip
이 프로젝트의 소스는 커니님의 소스를 약간 수정한 버전입니다.

Eclipse 4.2 주노(Juno)에서 Market Place 추가하기..

이클립스(Eclipse) 4.2 주노(Juno)에서는 기본적으로 마켓(Market Place)이 추가되어 있지 않아서, 필요한 플러그인들을 찾아다니면서 설치를 해야 한다. 이게 귀찮아서 찾아보니, 마켓 플러그인을 이클립스 4.2 주노 공식 리파지토리에서 설치하면 된다고 한다. 자 확인해 보자.

1. Help > Install New Software.. 를 선택. 
2. 화면에 보이는 Marketplace Client..를 선택하고, Next를 선택해서 설치를 시작.. 

3. 설치를 완료하고, 재시작 하면 아래의 화면을 볼 수 있다.

자, 이제 쉽게 플러그인을 찾아서 설치할 수 있게 된다. ^^