2011년 12월 25일 일요일

Proguard 의 라이브러리 파일을 다운로드 받자

요기서 받을 수 있다.

http://sourceforge.net/projects/proguard/files/proguard/

참고로 Proguard의 홈페이지

http://proguard.sourceforge.net/index.html#

2011년 12월 22일 목요일

안드로이드 SDK 버전을 15로 업데이트 하고 
15버전으로 VM을 만들어 에뮬레이터를 실행해 보니 다음과 같은 에러가 나온다.

>emulator: WARNING: Unable to create sensors port: Unknown error

원인은 아직 모르겠음...
딱히 안되는건 아니라 무시중;;;

[Eclipse] Workspace가 사용중으로 나와서 열리지 않을때..

일단..
당연히 다른 이클립스가(같은 Workspace를 사용하는) 떠있는지 확인해 본다.

workspace/.metadata/.lock 파일을 지워 본다.
-> 지워지지 않으면 작업 관리자를 열어 javaw 프로세스를 강제 종료 한다.

이래도 않되면~
재부팅 또는 재설치 ㅋㅋㅋ

[Android] API Level 15 업데이트시 오류 해결법

안드로이드 4.0.3 (API Level 15)가 나와 업데이트를 하려 하는데
다음과 같은 이유로 이클립스 플러그인이 설치 되지 않는다.


Your original request has been modified.
  "Android DDMS" is already installed, so an update will be performed instead.
  "Android Development Tools" is already installed, so an update will be performed instead.
  "Android Hierarchy Viewer" is already installed, so an update will be performed instead.
  "Android Traceview" is already installed, so an update will be performed instead.
Cannot complete the install because one or more required items could not be found.
  Software being installed: Android Development Tools 16.0.1.v201112150204-238534 (com.android.ide.eclipse.adt.feature.group 16.0.1.v201112150204-238534)
  Missing requirement: Android Development Tools 16.0.1.v201112150204-238534 (com.android.ide.eclipse.adt.feature.group 16.0.1.v201112150204-238534) requires 'org.eclipse.core.runtime 3.6.0' but it could not be found


이는 이클립스의 버젼이 낮아서 이므로 이클립스를 3.6으로 업데이트 하면 해결 할 수 있다.

http://www.eclipse.org/downloads/

위 링크에서 3.6 이상의 버젼으로 업데이트 하면 된다.

2011년 9월 5일 월요일

[JAVA] DefaultHttpClient 사용시 LogFactory가 없다는 오류가 나오면?

HttpClient 를 사용하다가 다음과 비슷한 에러를 만날 수 있다.
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 
  at org.apache.http.impl.client.AbstractHttpClient.(AbstractHttpClient.java:159)
  at org.apache.http.impl.client.DefaultHttpClient.(DefaultHttpClient.java:178) at test.main(test.java:24) 
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
  at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
말그대로 LogFactory의 구현 클래스가 없다는 오류인데 사실 DefaultHttpClient 를 사용하려면 다음 라이브러리도 필요하다.

해당 라이브러리는
http://commons.apache.org/logging/ 
에서 받을 수 있으며
commons-logging-1.1.1.jar
파일을 라이브러리에 추가해 주면 된다.

2011년 8월 25일 목요일

[JAVA] String을 InputStream으로 변환 하기

Inputsream is;
String strInput = "Input string";

is = new ByteArrayInputStream(strInput.getBytes("utf-8"));

2011년 8월 17일 수요일

org.apache.commons.httpclient 패키지의 jar 파일

웹에서 소스를 긁다 보면 종종 라이브러리 파일이 없는 경우가 있다.
꼴랑 import xxx.xxx.xxxxx 라고 써있는데 막상 파일명도 아니고
구하려고 검색 하려면 짜증이 밀려 온다. (영어 때문에 -ㅁ-;;)

암튼 org.apache.commons.httpclient 패키지가 필요해서 구글링 쫌 해봤는데..

해당 패키지의 개발은 끝났고
import org.apache.http.httpclient 사용을 권장한다고 한다.

여기서 받을수 있다.
http://archive.apache.org/dist/httpcomponents/commons-httpclient/binary/
참고로 난 commons-httpclient-3.1.zip 파일을 받았다.

2011년 6월 21일 화요일

2011년 6월 14일 화요일

[안드로이드] 전체화면(풀스크린) 으로 앱 생성하기

엑티비티의 onCreate() 메쏘드에 아래와 같이 생성하면 된다.

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  // 풀스크린 레이아웃
  requestWindowFeature(Window.FEATURE_NO_TITLE);
  getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);


  // 메인 뷰 생성
  setContentView(new WallpaperView(this));
 }

이렇게 하면 상태표시바가 없는,
화면에 가득찬 상태로 앱이 표시 되게 된다.

2011년 6월 9일 목요일

[VBScript] 구조체(클래스) 생성

아무래도 이쁘게 짜려면(노가다 안하려면) 구조체가 필수다.
구조체에 해당하는게 Class 인데 일반적인 OOP의 Class 와 비교하면 초라하다.
그냥 구조체 처럼 쓸수 있다고 생각하면 된다.
메쏘드(?)는 지원 되나 아직 안써봄 ㅋㅋ

Class TestClass
    Dim Member1
    Dim Member2
    Dim ArrayMember(5)           ' 배열도 있을수 있다.
    Dim TestClass2                    ' 클래스가 멤버 일수도 있다.
End Class

' 인스턴스 생성
Set Instace1 = New TestClass  ' New 키워드를 이용해 인스턴스를 생성 할수 있다.
Set Instace1 = Nothing             ' Null Point 같은 개념, 해주면 메모리 관리에 도움이 된다.

오브젝트에 다른 오브젝트를 대입 할때는 Set 을 써줘야 한다.
함수의 리턴 값으로 오브젝트를 리턴 한다면 아래와 같이 하면 된다.

Function TestEunc1()

    Instace1.Member1 = 3245

    ' 리턴값으로 오브젝트를 대입
    Set TestEunc1 = Instace1

End Function

끝~

[VBScript] 함수 선언 하는법

어쩌다 보니 VBScript를 하게 되었다;;
까묵지 않기 위해 정리 해둔다.

함수 선언

Function TestFunction(ByVal Arg1, ByRef Arg2)

    If Arg1 = "CDEF" Then
        TestFunction = "GHIJ"
        ' return에 해당
        Exit Function
    End If

    ' 리턴값 지정
    TestFunction = "ABCD"
End Function

' ByVal - 값에 의한 호출
' ByRef - 참조에 의한 호출

VBScript엔 타입이 존재하지 않는다.
그걸 모르고 ByVal 를 처음 보았을땐
"타입이 값에 따라 가변으로 정해지는 건가??"
생각 했었는데 --;;; 아니더라....

2011년 2월 26일 토요일

Android - VMware를 이용한 우분투64 에서 안드로이드 커널 빌드 오류2

기쁜 마음에
make 를 수행하면 빌드가 진행 된다.
한참 뒤 화면이 멈춘듯 하지만.... 하드디스크가 바쁘게 움직인다.
그러다 수분뒤 다음과 같은 에러가 난다면...
target Dex: core
make: *** [out/target/common/obj/JAVA_LIBRARYIES/core_intermediates/classes.dex] Killed

이는 메모리 부족으로 인한 오류로,
안드로이드 커널 빌드 요구 사항이 보면 램 1.5기가 하드디스크 10기가 이상으로 명시 되어 있다.

VMware Player를 열어 다음과 같이 설정 하므로써 메모리와 저장 공간을 확보 하자.
참고로 VMware Player 의 가상머신을 종료 하고 하지 않으면 설정을 변경 할 수 없을 수도 있으니 확실히 shut down 해줘야 한다.

VMware Player 를 실행해 가상머신을 선택 후 Virtual Machine Settings... 를 선택한다.

메모리 항목을 선택해 1.5GB(1536MB) 이상으로 설정해 준다.

다음으로 하드디스크를 선택 후 유틸리티-> Expand Disk Capacity 에서 넉넉히 20GB 이상으로 설정 해 준다.

겸사겸사 프로세서를 4개로 늘려 줬다 ㅋㅋ
기분 탓인지 빨라진듯도 하다.
빌드창 올라가는걸 보니 미드 보다 재밌다~

2011년 2월 25일 금요일

Android - unbuntu 10.10 64비트 커널에서 빌드 make 오류

먼저 본인은 리눅스 쌩초짜 임을 밝혀 둡니다 --;;

여전히 안드로이드 커널이 빌드중에 오류를 내뱉는다.
아래는 에러 메시지~

hermina@ubuntu:~/mydroid$ make
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.2.1
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
HOST_ARCH=x86HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=FRG83
============================================
host C: acp <= build/tools/acp/acp.c
In file included from /usr/include/features.h:387,
                 from /usr/include/stdlib.h:25,
                 from build/tools/acp/acp.c:11:
/usr/include/gnu/stubs.h:7: fatal error: gnu/stubs-32.h: No such file or directory
compilation terminated.
make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] Error 1

 뭐 이젠 척보기에도 리눅스를 64비트 버젼으로 깔았고
안드로이드 프레임웍 소스는 32비트를 받았기 때문이라는 삘이 온다.

gnu/stubs-32.h 파일이 없는 거군...

HOST_ARCH=x86 로 되어 있는걸로 보아 값을 x64라던가 비슷한 값으로 바꾸면
쉽게 될것 같은 냄새가 난다 ㅋㅋㅋ

우선 HOST_ARCH=x86의 값이 어디 있는지 알아 보기로 했다.
금방은 못찾겠어서;;;

  make HOST_ARCH=x64

요렇게 해보았다.

build/core/combo/select.mk:61: build/core/combo/HOST_linux-x64.mk: No such file or directory
/bin/bash: prebuilt/linux-x64/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc: No such file or directory
build/core/definitions.mk:1659: *** HOST_OS must define get-file-size.  Stop.


오우 노우~
그럼 다음 방법~

gnu/stubs-32.h 가 있도록 해보자...
뭐 우선 패키지인가? 설치 해보자.
구글님이 libc6-dev-i386이라신다 당장 설치해 보자

sudo apt-get install libc6-dev-i386

오우 노우~
또 에러 ㅋㅋ

.......
.......
.a when searching for -lstdc++
/usr/bin/ld: cannot find -lstdc++


구글님께 다시 여쭤 보니
http://source.android.com/source/download.html

64비트일 경우의 필요 유틸들을 다 적어 놨다.
확인 후 빠진 녀석을 체크 하자.
(참고 하던 책은 32비트 기준으로만 설명이 되어 있었다.)

sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper main multiverse"
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper-updates main multiverse"
sudo apt-get update
sudo apt-get install sun-java5-jdk
sudo update-java-alternatives -s java-1.5.0-sun
$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev

2011년 2월 23일 수요일

Android - Failed to create the SD card 해결

 - 원인
64비트 리눅스가 깔린 상태에서 32비트 안드로이드 SDK를 설치,
따라서 SD카드를 할당하는데 쓰이는 ia32-libs 패키지가 디폴트로 존제 하지 않으므로 발생하는 에러

 - 해결방법
ia32-libs 패키지의 설치
예) sudo apt-get install ia32-libs

64비트가 구지 쓰고 싶어서 설치 했는데...
녀석이 발목 잡는다;;;

2011년 1월 16일 일요일

Android - 레이아웃 XML 파일의 파일명

레이아웃 XML 파일의 파일명은 소문자만 가능 하다.
만일 대문자를 섞어 썼다면....

[2011-01-17 11:36:04 - TabTest] res\layout\TabContent2.xml: Invalid file name: must contain only [a-z0-9_.]

콘솔에 위와 같은 에러 메시지가 뜨게 된다.
평소에도 콘솔의 에러메시지를 유심히 봐둔다면
"대체 왜 않되는 거야!!!"
라며 짜증 내지 않아도 될듯 하다.