Android/Tools2012. 11. 20. 23:54

우분투에서 eclipse에 ADT plugin 을 설치 하였는데,

보이지가 않는다!


java version 이 1.6이하라서 그렇네.


java -version 해서 1.6 이하일 경우 update후 ADT를 재 설치 하면 해결.


update JDK to 1.6

Posted by ekwang
Android/Tools2011. 12. 15. 00:17

오랫만에 집에있는 노트북에서 android source 를 받으려고 했더니 아래와 같은 문제가 발생한다.

$repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1

Getting repo ...

   from git://android.git.kernel.org/tools/repo.git

android.git.kernel.org[0: 149.20.4.77]: errno=Connection refused

fatal: unable to connect a socket (Connection refused)  


생각해보니 android.git.kernel이 공격을 당해서 android git repository가 변경이 되었었지..
오래전에 받아둔 repo를 그대로써서 문제가 된것이다.

$vi ~/bin/repo

#!/bin/sh


## repo default configuration

##

REPO_URL='https://android.googlesource.com/tools/repo'

REPO_REV='stable'


구버젼 repo의 REPO_URL은 위의 주소가 아닌 git://android.git.kernel.org/... 로 되어 있을 것이다.
REPO_URL을 변경해 주거나, 깔끔하게 repo를 삭제하고 다시 받는게 좋다.

Posted by ekwang
Android/Tools2011. 12. 13. 09:31

Windows 환경에서 CTS 테스트를 진행 하는 방법에 대한 설명.
CTS tool 중 ddmlib-prebuilt.jar, junit.jar, hosttestlib.jar 를 사용하여 auto test가 진행되고
testResult.xml 파일을 생성해준다.

1.     우선 아래 사이트에서 최신 CTS를 다운 받고 압축을 적절한 위치에 푼다.

http://source.android.com/compatibility/downloads.html

Android 2.3 R9 Compatibility Test Suite (CTS)

 

2.     첨부의 cts.cmd 파일을 적절한 위치로 copy한 후 본인의 CTS 설치 경로에 맞게 편집 한다. (현재 파일 첨부가 안되어 cts.cmd 파일이 없음. 아래 내용을 cts.cmd에 저장하여 사용하면 됨.)

cd D:\project\document\Android\CTS\android-cts-2.3_r9-linux_x86-armv5\android-cts\tools
 

java -Xmx512m -cp "cts.jar;D:\project\document\Android\CTS\android-cts-2.3_r9-linux_x86-armv5\android-cts\tools\ddmlib-prebuilt.jar;junit.jar;hosttestlib.jar" com.android.cts.TestHost "D:\project\document\Android\CTS\android-cts-2.3_r9-linux_x86-armv5\android-cts\repository\host_config.xml"

 

3.     window cmd창에서 cts.cmd 파일 실행. cts_host> 프롬프트가 보이면 정상임을 확인 후 exit

 

4.     \android-cts-2.3_r9-linux_x86-armv5\android-cts\repository\testcases 경로에 있는

TestDeviceSetup.apk 와 본인이 테스트할 apk를 설치 한다. (ex. CtsMediaTestCases.apk)

 

 >  adb install r Development.apk (Dev Tool 이 없으면 설치 해야 됨)

 > adb install r TestDeviceSetup.apk

 > adb install r CtsMediaTestCases.apk

 

5.     다시 cts.cmd를 실행. cts_host> 에서 상황에 맞게 아래 cmd 입력.

package명이나 testcase, test 명은 CtsMediaTestCases.xml 파일에서 확인 할 수 있음.

<TestSuite name="android">       

                <TestSuite name="media">           

                        <TestSuite name="cts">               

                                <TestCase name="MediaPlayerStreamingTest">                   

                                        <Test name="testRTSP_H263_AMR_Video1"/>

 

1)     CtsMediaTestCases.apk package의 전체 항목 테스트

cts_host>start --plan CTS -p android.media

2)     CtsMediaTestCases의 원하는 TestCase 항목만..

cts_host>start --plan CTS -p android.media.cts.MediaPlayerStreamingTest

3)     CtsMediaTestCases의 원하는 TestCase 의 원하는 Test .

cts_host>start --plan CTS -t android.media.cts.MediaPlayerStreamingTest#testRTSP_H263_AMR_Video1

  

6.     결과 확인

\android-cts-2.3_r9-linux_x86-armv5\android-cts\repository\results

Posted by ekwang
Android/Tools2009. 12. 15. 13:48
2009년 12월 10일 android blog에 새로운 글이 포스팅 되었다.

Optimize your layouts

Android application 은 xml 파일을 작성하여 UI layout을 생성할 수 있다.
이 UI layout을 위한 xml파일이 효율적으로 작성이 되어 있는지를 검사해주는 툴이 layoutopt 이다.

사용 법은 간단하다.
usage: layoutopt <directories/files to analyze>

$ layoutopt samples/samples/compound.xml
  7:23 The root-level <FrameLayout/> can be replaced with <merge/>
  11:21 This LinearLayout layout or its FrameLayout parent is useless samples/simple.xml
  7:7 The root-level <FrameLayout/> can be replaced with <merge/>
samples/too_deep.xml
  -1:-1 This layout has too many nested layouts: 13 levels, it should have <= 10!
  20:81 This LinearLayout layout or its LinearLayout parent is useless
  24:79 This LinearLayout layout or its LinearLayout parent is useless
  28:77 This LinearLayout layout or its LinearLayout parent is useless
  32:75 This LinearLayout layout or its LinearLayout parent is useless
  36:73 This LinearLayout layout or its LinearLayout parent is useless
  40:71 This LinearLayout layout or its LinearLayout parent is useless
  44:69 This LinearLayout layout or its LinearLayout parent is useless
  48:67 This LinearLayout layout or its LinearLayout parent is useless
  52:65 This LinearLayout layout or its LinearLayout parent is useless
  56:63 This LinearLayout layout or its LinearLayout parent is useless
samples/too_many.xml
  7:413 The root-level <FrameLayout/> can be replaced with <merge/>
  -1:-1 This layout has too many views: 81 views, it should have <= 80! samples/useless.xml
  7:19 The root-level <FrameLayout/> can be replaced with <merge/>
  11:17 This LinearLayout layout or its FrameLayout parent is useless

하지만 Window 환경에서 layoutopt를 수정없이 사용하게 되면 아래와 같은 에러를 보게 될 것이다.

Exception in thread "main" java.lang.NoClassDefFoundError: lib\layoutopt/jar
Caused by: java.lang.ClassNotFoundException: lib\layoutopt.jar
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: lib\layoutopt.jar.  Program will exit.

포스팅된 글을 끝까지 잘 읽어보면 해결책이 나와있다.

Windows users: to start layoutopt, open the file called layoutopt.bat in the tools directory of the SDK and on the last line, replace %jarpath% with -jar %jarpath


쉽게 이해가 안되면 아래와 같이 따라하자.

1. \sdk\android-sdk-windows\tools\layoutopt.bat 파일을 편집기로 연다.

2. 파일의 제일 마지막을 다음과 같이 수정한다.

수정 전  call java %java_debug% -Djava.ext.dirs=%javaextdirs% %jarpath% %*
수정 후  call java %java_debug% -Djava.ext.dirs=%javaextdirs% -jar %jarpath% %*

3. 파일을 저장 후 layoutopt를 사용한다.
파일명을 직접 입력 하거나, xml 파일이 있는 폴더명을 입력해주면 해당 폴더 내의 모든 xml 파일을 분석한다.

분석 내용이 길어질 경우를 대비에 > 를 사용해 출력을 analyze.txt에 담아도 좋다.

> layoutopt main.xml > analyze.txt
> layoutopt ./res/layout/

만약 분석을 요청한 파일에 특별한 내용이 없을 경우에는 
입력한 parameter만 출력이 되고 동작을 멈춘다.

[U]
Posted by ekwang
Android/Tools2009. 11. 21. 01:12
ubuntu 9.10으로 upgrade를 하고 나서
eclipse에 ADT install (ADT update) 를 하려고 하니 몇몇 버튼이 동작 하지 않는 현상이 있었다.

해결 방법에 대해서는 이미 많은 글들이 소개하고 있다.
gtk로 구현된 application에서 발생하는 문제라고 한다.

아래와 같이 하여 eclipse를 실행 하도록 하면 해결 된다.

~$gedit eclipse.sh

  1. #!/bin/sh  
  2. export GDK_NATIVE_WINDOWS=true  
  3. /home/ekwang/android/eclipse/eclipse

~$chmod +x eclipse.sh

그리고 나서 eclipse.sh을 실행 하면 된다.
Posted by ekwang
Android/Tools2009. 10. 28. 09:34

Android 1.6이 릴리즈 된지 불과 한달 보름정도가 지났는데 벌써 2.0 이 릴리즈 되었다.
http://developer.android.com/sdk/android-2.0.html

Android SDK 2.0 는 설치 방법이 기존과 좀 달라졌는데,
android-sdk_r3-windows.zip 를 다운로드 받아서 압축을 풀어보면
tools 폴더의 파일들만 존재하고 그외 add-ons, docs, platforms, usb-driver의 폴더는 파일들은 비어 있는 상태이다.
SDK 2.0에 포함된 tools 외 파일들에 대한 변경 및 배포에 용이 하도록 방식을 수정한 듯 하다.
이후로는 SDK Manager라고 하는 SDK Setup.exe를 이용하여 Eclipse에서의 ADT plugin upgrage와 같이 SDK도 upgrade 받는 방식이 될 것 같다.

SDK Readme.txt 파일을 읽어보시고
SDK Setup.exe파일을 실행하면 그 외의 필요한 파일들을 다운로드 받을 수 있다.

Failed to fetch URL https://dl-ssl.google.com/android/repository/repository.xml
와 같이 연결 에러가 발생할 경우
아래와 같이 Force https:// ... 에 체크를 하고 
Save & Apply를 한 후 종료한다
그리고 다시 SDK Setup.exe 또는 tools/android 를 실행 하여 
Available Packages에서 주소를 다시 refresh 하면 된다.


ADT 버젼도 0.9.3에서 0.9.4로 upgrade되었으니 eclipse 사용자는 plugin을 update하도록 하자.
DDMS와 ADT tools 모두 upgrade되었는지 확인하도록 하자.
아쉽게도 이번 버젼에서도 AVD생성 경로에 한글이 포함되어 있을 경우 아래와 같은 에러가 발생하게 된다.
해결 방법 링크
emulator: ERROR: bad config: virtual device directory lacks config.ini
emulator: could not find virtual device named 'avd_2_0'


참고로 Android 2.0의 Platform 소스는 이번에도 같이 릴리즈 되진 않았다.
Posted by ekwang
Android/Tools2009. 10. 16. 15:24

window에서 어찌하다보니 JDK설치 후 다른 버젼의 JRE도 설치를 했었다.
정리를 하다가 버젼이 낮은 JRE를 삭제를 하였다.

그 이후 android sdk에 있는 tools에 있는 android, ddms와 같은 툴들을 실행하니 아래와 같은 에러가 발생하였다.

D:\SFF\Android\SDK\android-sdk-windows-1.6_r1\tools>android
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/android/archquery/Main (Unsupported major.minor version 49.0)
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Starting Android SDK Updater
SWT folder '' does not exist.
Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.


문제의 해결 방법은 간단하다.
Window의 환경변수에, 설치 혹은 삭제 후 변경된 JRE의 bin폴더를 등록하면 된다.
ex) C:\Program Files\Java\jdk1.6.0_03\bin

시스템 등록 정보에서 환경변수 수정하였다면 로그오프후 다시 확인을 해봐야 한다.
그래야 변경한 환경 변수가 다시 설정됨.

혹은 cmd 창에서 아래와 같이 입력하면 환경 변수가 바로 변경되어 시스템에 등록된다.

>set PATH=%PATH%C:\Program Files\Java\jdk1.6.0_03\bin
>set PATH

PATH=C:\Program Files\Qualcomm\Brew MP 1.0 SDK Rev 4.3\tools\deprecated\BTIL\host\bin;C:\Tool\Cygwin\bin;C:\Tool\ARM\ADSv1_2\bin;C:\WINDOWS\system32;C
:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\RnD\Rational\ClearCase\bin;D:\SFF\Android\SDK\android-sdk-windows-1.6_r1\tools;C:\Program Files\Rn
D\Rational\common;C:\Program Files\Klocwork\Klocwork 8.0 User\bin;C:\Tool\MinGW\bin;C:\Program Files\Microsoft Visual Studio\Common\Tools\WinNT;C:\Pro
gram Files\Microsoft Visual Studio\Common\MSDev98\Bin;C:\Program Files\Microsoft Visual Studio\Common\Tools;C:\Program Files\Microsoft Visual Studio\V
C98\bin;C:\PlaysForSure\DeviceTestKit\Utils;C:\Program Files\Klocwork\Klocwork 8.0 User\bin;C:\Program Files\Java\jdk1.6.0_03\bin;
Posted by ekwang
Android/Tools2009. 10. 12. 13:18
http://source.android.com/using-eclipse
의 내용 중.

Increase Eclipse's Memory Settings

The Android project is large enough that Eclipse's Java VM sometimes runs out of memory while compiling it. Avoid this problem by editing the the eclipse.ini file. On Apple OSX the eclipse.ini file is located at /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse.ini

Memory-related defaults (as of Eclipse 3.4)

-Xms40m
-Xmx256m
-XX:MaxPermSize=256m

Eclipse에서 android source를 보기 위해서는 위와 같이 JVM의 heap size를 증가 시켜주는 것이 eclipse 를 구동하는데 안정적이고 좋다.
만약 heap size를 증가 시키지 않으면 OutOfMemoryErrors 를 자주 보게 될 것이다.

간혹 위의 내용을 참고하여 eclipse.ini 파일을 위와 같이 수정하였으나
아래와 문제가 발생하며 eclipse가 실행되지 않는 현상을 접하는 분들이 있을 것이다.
JVM terminated. Exit code=-1
-Xms256m
-Xmx512m



이때 아래와 같이 eclipse.ini를 수정 후 정상 동작 한다.

-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vm
C:\Program Files\Java\jdk1.6.0_03\bin\javaw.exe

-vmargs
-Xms256m
-Xmx512m
-XX:MaxPermSize=256m


-vm 옵션을 이용하여 javaw의 위치를 정확히 지정해 준 이후에 eclipse가 위의 에러없이 정상 동작 함을 확인 하였다.

추가로 http://wiki.eclipse.org/Eclipse.ini 를 보면 아래와 같은 내용이 있으니 참고한다.
-vmargs 옵션 아래로 선언되는 옵션 값들은 JVM에게 전달해 주는 것이다.
즉 heap size 조정 option들은 -vmargs 아래쪽에 위치 해야 한다는 이야기이다.

Important:
  1. Each option and each argument to an option must be on its own line.
  2. All lines after -vmargs are passed as arguments to the JVM, so all arguments and options for eclipse must be specified before -vmargs (just like when you use arguments on the command-line)

알다시피 eclipse는 JVM에서 구동이 되는 application이므로 우리는 JVM에게 eclipse를 구동하기 위해서 얼마의 heap을 사용 할 수있도록 option값을 주는 것이다.

참고 site:
http://wiki.eclipse.org/FAQ_How_do_I_increase_the_heap_size_available_to_Eclipse%3F
Posted by ekwang