블로그 이미지
HISONA

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

calendar

1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30



안녕하세요? 


몇년 만에 포스팅을 하네요.. 


샤오미 Yeelight 침대등이 정식 수입되지 않아서 정식 한글앱이 없습니다.

그래서 Yeelight Android 앱을 한글화 해봤습니다. 

리소스 파일에 있는 단어만 한글화 되었기 때문에 완전하지 않지만 쓰는데는 지장이 없을 정도이니 

아쉬운데로 정식 한글앱이 나오기전까지 사용하세요.

저작권 문제로 파일이 삭제될 수 있으니 양해해 주세요..

 

아래 첨부파일에서 앱을 다운로드 받으세요. 





com.yeelight.cherry_1.0.2_670_ko.apk






Android Source 에서 Windows 용 SDK 빌드하기

2012. 11. 2. 15:44 | Posted by HISONA

Android Source 에서 Windows 용 SDK 빌드하기

(android-4.1.1_r6 기준)

 

1. 안드로이드 소스 받기

 

안드로이드 &커널 소스 다운 받기(구글 안드로이드, 각 제조사 오픈소스) 

http://olpost.com/v/3531216 참조

 

$ mkdir jb_4.1

$ cd jb_4.1

$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.1.1_r6

$ repo sync

 

2. Windows 용 SDK build

 

Linux 장비에서 MinGw 를 통해서 Windows 용 SDK 를 빌드합니다.

 

1) Mingw for Linux, Tofrodos 받기

 

$ sudo apt-get install mingw32 tofrodos

 

2) Build

 

$ . build/envsetup.sh
$ lunch sdk-eng
$ make win_sdk

 

3. Goldfish Kernel Build

 

1) Goldfish Kernel 다운로드

 

$ git clone https://android.googlesource.com/kernel/goldfish.git kernel
$ cd kernel

$ git checkout --track -b android-goldfish-2.6.29 remotes/origin/android-goldfish-2.6.29

 

2) Kernel 빌드

 

$ make ARCH=arm goldfish_armv7_defconfig

$ make ARCH=arm CROSS_COMPILE=~/android/jb_4.1/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-

$ make

$ cp arch/arm/boot/zImage ./kernel-qemu

 

 

 

 

 

 

 





안녕하세요? 

이전 버전의 Windows 용 Android NDK 에서는 Android C-native 코드를 빌드하기 위해서는
Cygwin 이 반드시 필요했습니다.

그러나, Android NDK,r5 버전 부터는 prebuilt 에 포함된 Arm Toolchain 의 Cygwin 의 종속성이 없어졌습니다. 그런데, 아직 Makefile 들은 정리가 안된 것 같네요..

다음과 같이 Makefile 을 수정해 주시면 MinGW 환경에서도 NDK 로 빌드하실 수 있습니다.

build/core/definitions.mk 파일에서, 

 ifeq ($(HOST_OS),windows) 항목을 ifeq ($(OSTYPE),cygwin) 로 수정해 주시면 됩니다.

사용법은, android-ndk-r5 디렉토리에서 다음과 같이 하시면 됩니다..  

    sh ndk-build -C samples\hello-jni\jni 

감사합니다.

P.S : MinGW 설치 방법은 이전 포스트를 참조하세요... 
        (MinGW\bin, msys\bin 디렉토리가 환경변수 path 에 들어있어야 하는 것은 알고
        계시죠? ㅎㅎ)





Android 에서 디바이스 드라이버를 테스트 한다거나, 리눅스 라이브러리를 빌드하는 것과 같은, 여러가지 이유로 간단하게 C 로 작성된 테스트 어플 및 Dynamic Linkage 라이브러리와 같은 Android C Native Application 을 개발하기 위해서 해야 할 일들을 정리해 보았습니다.
다들 아시겠지만, Android 에서는 BSD 계열의 Bionic-C 의 라이브러리를 사용하고 있습니다. 그래서 GNU Toolchain 을 사용해서 작업하려면 Static 으로 빌드를 해야 하지만, 바이너리 사이즈가 커지는 단점이 있습니다. 여기에서는 Android NDK 에 포함된 bionic-C 라이브러리를 사용해서 Native 바이너리를 생성하는 방법을 설명합니다.
그리고, 여기에서는 Windows 에서 작업하는 것을 기준으로 설명합니다. 이유는 리눅스에서 작업하기 위해서는 별도의 PC나 Vmware 와 같은 프로그램이 필요하고, Windows 에서 개발하는 것이 더 편리하기 때문입니다. 또한, Windows 에서 작업하는 방법을 안다면, 리눅스에서 개발하시던 분은 리눅스에서도 동일하게 작업이 가능하실 것으로 생각됩니다.

1. Andorid NDK 설치

- 먼저 http://dl.google.com/android/ndk/android-ndk-r4b-windows.zip 에서 Android NDK 를 다운로드 받습니다.  
- 적당한 위치에 android-ndk-r4b-windows.zip 파일의 압축을 풀면 됩니다.
- 저는, “D:\android-ndk-r4b” 에 설치하였습니다.

2. MinGW, Msys 설치

- Android 개발 환경이 Linux 기반으로 되어 있기 때문에, Windows 에서 리눅스 개발 환경을 제공해 주는 것입니다. MinGW 와 Msys 에 대해서는 이전 포스트의 설치 방법을 참조하시면 될 것 같습니다(http://ohadev.tistory.com/6)
- Android NDK 에서는 Cygwin(MinGW 와 같이 Linux 개발 환경을 제공) 을 사용해서 컴파일 하도록 하고 있으나, 개인적으로 MinGW 를 더 선호하기 때문에 MinGW 를 기준으로 설명합니다. Cygwin 을 사용하시는 분들은 Cygwin 을 사용하셔서 진행하셔도 됩니다.

3. Arm Cross-compiler Toolchain 설치

- CodeSourcery 에서 Windows 설치용 Arm-Linux Toolchain  을 다운로드 해서 설치합니다.
(http://www.codesourcery.com/sgpp/lite/arm/portal/package6491/public/arm-none-linux-gnueabi/arm-2010q1-202-arm-none-linux-gnueabi.exe)
- 저는, “D:\Android\arm-2010q1” 에 설치하였습니다.
- CodeSourcery Toolchain 은 Cygwin 용 dll 을 사용하지 않기 때문에, Cygwin 을 설치하지 않으셔도 컴파일을 하실 수 있습니다. (제가 MinGW 를 사용하는 이유가 MinGW 로 Windows Application 을 만들면 Cygwin 과 같이 별도의 dll 을 포함 시키지 않아도 되기 때문입니다.)
- Cygwin 을 사용하면 Android NDK 에 포함되어 있는 Toolchain (android-ndk-r4b\build\prebuilt\windows\arm-eabi-4.4.0) 을 사용해서 컴파일할 수 있을 것 같은데 저는 잘 안되는군요.

4. Makefile 작성

예제파일 : 


- 본 문서를 작성하기 위해서 http://dustinlee.egloos.com/1973505 를 참고하였습니다.
- Makefile 에서 주의하실 점은, Android NDK 에 포함되어 있는 Bionic-C 라이브러리를 사용하기 위해서, GNU 에 포함된 라이브러리를 사용하지 않도록, “-nostdlib”  Link 옵션을 주셔야 합니다.
- 또한, LDFLAGS 에서 dynamic-linker 를 지정할 때 그냥 path 를 “/system/bin/linker” 를 지정하면 msys 에서 상대 Path로 인식해서 앞에 D:/MinGW/msys/ 를 자동으로 붙여버리기 때문에, 절대 경로를 지정하기 위해서 “//system/bin/linker” 로 지정하셔야 합니다.
- 예제에서 사용한 Makefile 은 다음과 같습니다.

TARGET = hello

CROSS  = /d/Android/arm-2010q1/bin/arm-none-linux-gnueabi-
INCDIR = /d/Android/android-ndk-r4b/build/platforms/android-8/arch-arm/usr/include
LIBDIR = /d/Android/android-ndk-r4b/build/platforms/android-8/arch-arm/usr/lib

CC  = $(CROSS)gcc
AR  = $(CROSS)ar
LD  = $(CROSS)ld
NM  = $(CROSS)nm
RANLIB  = $(CROSS)ranlib
STRIP = $(CROSS)strip

INCLUDE = -I. -I$(INCDIR)

CFLAGS = -Wall
LDFLAGS = -nostdlib -Wl,--dynamic-linker,"//system/bin/linker" -L$(LIBDIR) -lc -lm -lstdc++ -ldl

# crt
CRTOBJ = $(LIBDIR)/crtbegin_dynamic.o

# application file
APPSOURCES = main.c
APPOBJS = $(APPSOURCES:.c=.o)

# define the rule
.SUFFIXES:.c .o
.c.o:
@echo Compiling: $<
$(CC) -c $(CFLAGS)  $(INCLUDE) -o $@ $<

all: app

app: $(APPOBJS)
@echo Linking: $(TARGET)
$(CC) -o $(TARGET) $(APPOBJS) $(CRTOBJ) $(LDFLAGS)
$(STRIP) -s $(TARGET)

clean:
@rm -vf $(APPOBJS) $(TARGET)

5. 실행

- Android emulator 를 실행한 다음, adb 를 이용하여 컴파일된 파일을 실행하시면 다음과 같은 결과를 얻으실 수 있습니다.






안녕하세요?

버전 업그레이드가 너무 늦었서 죄송합니다. ... 요즘 일이 많아서 작업할 시간이 없었네요.. ㅎㅎ
SonaMemoryDS v0.4 에서는 망각곡선 암기법을 적용한 단계별 학습기능이 추가가 되었습니다.
각 단계별로 암기한 단어들은 "암기" 버튼을 누르면 단계별 일정시간 뒤에 다음 단계에서 
반복 학습하실 수 있습니다.

또한 외부 음성파일(mp3) 우선 재생 기능으로 변경되었습니다.
그리고, 이번 버전부터 음성파일을 포함 파일과 음성파일을 삭제한 버전으로 두가지 버전으로
배포됩니다.

감사합니다..



1. 음성파일 제거 버전


2. 음성파일 포함 버전





안녕하세요?

SonaMemoryDS v0.2 에서 외부 음성파일(mp3) 재생 안되던 버그를 수정하였습니다.
smd 파일이 있는 디렉토리의 sound 디렉토리에 mp3 파일을 넣으시면 됩니다.
(sound/a/ 와 같이 알파벳으로 디렉토리를 만들지 않고, 그냥 sound 디렉토리에
 mp3 파일을 넣으시면 됩니다.)

그리고, 제가 틈틈히 만들고 있는거라 기능 추가에 시간이 많이 걸립니다.
그래서 업데이트가 늦어지더라도 양해해 주시기 바랍니다.

감사합니다..






안녕하세요.

Nintendo DS 용 단어암기 프로그램인 SonaMemoryDS v0.2 로 업그레드 되었습니다.
SonaMemory 는 영어 단어 암기를 쉽게 할 수 있도록 하는 학습 프로그램으로
무료로 다운받아서 사용하실 수 있습니다.
이번 버전은 어린이날 특별버전 입니다. ㅎㅎㅎ

* 다른곳에 퍼가실때는 출처를 반드시 포함해 주세요...


학습하고자 하는 단어장을 텍스트 파일(.smd) 파일로 만들어서 추가하시면 다양한 단어 학습을 지원할 수 있습니다.
또한, PC용 단어암기프로그램인 별이(http://www.waterhill.net/), 똑똑이(http://www.softnsoft.com/)와 데이터 호환이 되기 때문에 위 단어파일을 사용하실 수
있습니다.

smd 파일이 있는 디렉토리에 sound 디렉토리를 만들고, 그곳에 새로운 단어의 발음 파일을 mp3 파일로 추가하실 수 있습니다.
(이전버전에서는 sound 디렉토리에 알파벳순으로 디렉토리가 있었지만, 0.2 버전에서는 기본 sound 파일이 SonaMemory.nds 에 포함되어 있습니다. 그리고, 기존 sound 파일에 포함되어 있지 않은 파일들은 sound 디렉토리에 그냥 포함하시면 됩니다.) 

- 사용 방법 -

1. 아래 SonaMemoryDS_v0.2.exe ~ SonaMemoryDS_v0.2.a04 파일을 다운로드 받은 다음
    SonaMemoryDS_v0.2.exe 을 실행해서 압축을 푸십시오. 
2. SonaMemory.nds 를 해당 카드에 맞게 DLDI 패치를 하십시오.
3. SonaMemory.nds 파일과 smd 파일을 T-Flash 메모리에 복사하십시오. 
4. 단어파일을 .smd 파일(첨부된 단어샘플.smd 을 참조하세요.)로 만들어서 추가하십시오.
5. 추가할 sound 파일은 smd 파일이 있는 디렉토리의 sound 디렉토리에 추가하십시오.

- 지원 기능 - 

1. 텍스트 영어단어 파일 지원 (첨부파일에 있는 sample.smd 파일 참조)
2. 영단어 음성 발음(mp3) 지원
3. 디렉토리에서 파일선택(한글파일) 지원
4. Freetype 폰트 지원

- 버그 수정 -

1. libfat 버그 수정 - 한글파일명 sav 파일 저장오류 수정
2. smd 파일마지막에 빈칸줄이 없을 경우 출력되지 않는 오류 수정

- 추가된 기능 -

1. sound 를 SonaMemory.nds 에 합침
   (nds 파일에 포함된 sound 파일이 없을 경우 smd 파일의
    sound 디렉토리에 있는 파일을 사용해서 음성 출력함) 
2. 글자수에 따라 Font 크기 자동 조절
3. 속도 조절 기능 추가
4. 앞으로 가기, 뒤로 가기 기능 추가
5. STEP 기능 추가 (정지 버튼을 누른 상태에서 앞으로 가기,
   뒤로 가기 버튼 사용) 

- 향후 추가 기능 -

1. 망각곡선을 적용한 기억력 향상 학습법을 적용할 예정입니다.
2. 테스트 기능을 추가할 예정입니다.
 




안녕하세요.

Nintendo DS 용 단어암기 프로그램 SonaMemoryDS v0.1 을 공개합니다.
SonaMemory 는 영어 단어 암기를 쉽게 할 수 있도록 하는 학습 프로그램으로
무료로 다운받아서 사용하실 수 있습니다.

* 다른곳에 퍼가실때는 출처를 반드시 포함해 주세요...



학습하고자 하는 단어장을 텍스트 파일(.smd) 파일로 만들어서 추가하시면
다양한 단어 학습을 지원할 수 있습니다.
또한, PC용 단어암기프로그램인 별이(http://www.waterhill.net/), 똑똑이(http://www.softnsoft.com/)와 데이터 호환이 되기 때문에 위 단어파일을
사용하실 수 있습니다.

또한, sound 폴더에 새로운 단어의 발음 파일을 mp3 파일로 추가하실 수 있습니다. 

사용방법

1. 아래 SonaMemoryDS.zip 파일의 압축을 푼 다음 T-Flash 메모리에 복사하십시오. 
   넣으시면 됩니다.
2. NDS 의 해당 카드에 맞게 DLDI 패치를 하십시오. 
3. 단어파일을 .smd 파일(첨부된 단어샘플.smd 을 참조하세요.)로 만들어서 추가하십시오.
3. 첨부파일의 sound.exe 파일을 실행해서 압축을 푼 다음, SonaMemory\sound 디렉토리로
   복사하십시오.
  (sound 디렉토리는 영단어 학습파일(.smd)과 같은 디렉토리에 있어야 음성 발음이 지원됩니다.)

지원 기능

1. 텍스트 영어단어 파일 지원 (첨부파일에 있는 sample.smd 파일 참조)
2. 영단어 음성 발음(mp3) 지원
3. 디렉토리에서 파일선택(한글파일) 지원
4. Freetype 폰트 지원

향후 추가 기능

1. 망각곡선을 적용한 기억력 향상 학습법을 적용할 예정입니다.
2. 테스트 기능을 추가할 예정입니다.

첨부파일1 : SonaMemoryDS.zip


첨부파일2 : sound.exe






안녕하세요?

이번 포스트에서는 Android Emulator 소스를 수정하여 Floating Point 연산 속도를 개선해 보도록 하겠습니다. Android OpenGL ES Issue Report 에 보시면 Android Emulator 에서 OpenGL 연산속도가 문제가 되고 있는것 같습니다. Android Emulator 에 포함된 OpenGL ES 는 소프트웨어 방식의 OpenGL ES 1.5 가 사용되고 있습니다.
그러므로, OpenGL 3D 를 구현하기 위해서는 Matrix 연산이 많이 사용되는데, Floating Point 연산속도가 개선되면 3D 의 연산 속도를 높일 수 있을 것입니다.

Floating Point 연산 속도 개선을 위해서는 몇가지 작업을 해주어야 합니다. 

첫째, Android Emulator 의 fpu 소스코드에서는, softfloat.c 를 사용하도록 되어 있습니다. 속도를 개선하기 위해서는 softfloat-native.c 를 사용하여야 합니다. 그러나, Android Emulator 에 포함되어 있는 softfloat-native.c 파일에는 몇가지 버그가 있습니다. 아래 파일은 Patch 된 파일입니다. 이 파일들을 받아서 android-emulator-1.0_r2\android-emulator-20081210\qemu\fpu 에 있는 파일들을 변경하십시오.

 
그리고, 몇몇 파일들을 수정해 주어야 합니다.

1) android-emulator-1.0_r2\android-emulator-20081210\qemu\android\config\config.h 파일에서 다음과 같이 수정하십시오(CONFIG_SOFTFLOAT 을 undefine 하십시오.) 

//#define CONFIG_SOFTFLOAT 1
#undef CONFIG_SOFTFLOAT

2) android-emulator-1.0_r2\android-emulator-20081210\qemu\Makefile.android 에서 softfloat.c 파일을 softfloat-native.c 로 수정합니다.

line 170:
FPU_SOURCES := softfloat-native.c

line 250:
FPU_SOURCES := softfloat-native.c

3) android-emulator-1.0_r2\android-emulator-20081210\qemu 에서 make 하시면, objs 디렉토리에 emulator.exe 가 생성됩니다. 컴파일한 실행파일은 아래에 있습니다.



둘째, linux kernel config(.config) 파일에서, CONFIG_VFP=y 로 설정되어 있어야 합니다. 다행이 Android 에서 사용하는 linux kernel 에서는 아래와 같이 VFP 를 사용하도록 설정되어 있습니다. 



세째, linux 어플리케이션 프로그램을 컴파일 할때 컴파일 옵션에,  "-mfpu=vfp -mfloat-abi=softfp"
를 포함해서 컴파일 해야 합니다. 즉, Dalvik VM 이나 OpenGL ES 를 사용하는 라이브러리들이 이 옵션으로 컴파일 되어야 합니다. 저는 아직 Dalvik VM 을 컴파일 해보지 않았기 때문에 이 부분은 다른분들께 맡기도록 하겠습니다.

대신 샘플 어플리케이션으로 테스트 결과를 보여드리도록 하겠습니다.

테스트에 사용한 샘플코드는 간단하게 float 변수 사칙연산을 각각 1,000,000 번 수행한 시간을 측정한 것입니다.
테스트 프로그램을 컴파일 하는데는 Codesourcery G++ Lite 208q1-126 for ARM GNU/Linux 를 사용하였습니다. 그리고, Android Emulator 는 libc 를 사용하지 않기 때문에, 라이브러리를 static link 하였습니다.
아래 첨부파일에 테스트에 사용한 소스코드와 실행파일이 포함되어 있습니다.  
 



float_vfp 는  "-mfpu=vfp -mfloat-abi=softfp" 옵션을 포함해서 컴파일한 실행파일입니다. float_nofp 는 옵션없이 컴파일한 파일입니다.   

테스트에 사용한 컴퓨터 사양은, 다음과 같습니다.

CPU: Intel Core2 6400 2.13GHz
RAM: 2G
OS: Windows XP SP3

1) 수정하지 않은 Android Emulator 에서 테스트한 결과

./float_nofp
add operation => elipse time: 0s, 135414us
sub operation => elipse time: 0s, 202468us
mul operation => elipse time: 0s, 116733us
div operation => elipse time: 0s, 272469us

./float_vfp
add operation => elipse time: 0s, 100574us
sub operation => elipse time: 0s, 115769us
mul operation => elipse time: 0s, 97731us
div operation => elipse time: 0s, 110618us

2) softfloat-native 를 적용한 Android Emulator 에서 테스트한 결과

./float_nofp
add operation => elipse time: 0s, 137863us
sub operation => elipse time: 0s, 201425us
mul operation => elipse time: 0s, 118687us
div operation => elipse time: 0s, 271949us

./float_vfp
add operation => elipse time: 0s, 68719us
sub operation => elipse time: 0s, 67290us
mul operation => elipse time: 0s, 66261us
div operation => elipse time: 0s, 78777us


그러므로, vfp 옵션을 주고 컴파일한 경우에는 거의 2배 정도 성능개선 효과가 있는 것으로 보입니다. 그리고, Android Emulator 에 softfloat-native 를 적용하면 약 30% 정도의 성능이 개선되는것 같군요 .. 

 




Android 1.0 SDK 에 포함된 Emulator(emulator.exe) 를 컴파일하는 방법입니다.
Android Emulator 소스코드는 Windows, Linux, OSX 에서 컴파일 할 수 있습니다. 
저는 Windows PC 용으로 컴파일 하는 방법을 보여 드리겠습니다.

그리고, RC2 소스를 받아서 바로 컴파일 하면 Compile Error 가 생깁니다. 이전 버전에서는 없던 Bug 인데, Android 개발자가 소스코드를 잘 못 올린듯 합니다.
일단, Makefile 에 버그가 있는데, 수정하는 방법을 알려드리겠습니다.

앞에 글에서도 소개했지만, MinGW 와 MSYS 도 설치가 되어 있어야 합니다. 그리고, MinGW\bin, MSYS\bin 디렉토리가 환경변수의 Path 에 등록되어 있어야 합니다.

1. 먼저 Emulator for Android 1.0 SDK, Release 2
 소스 코드를 다운 받습니다.

2. 도스창을 실행해서 소스코드를 적당한 위치에 풉니다. (MinGW\bin 과 MSYS\bin 디렉토리가 환경변수에 등록되어 있으면 도스창에서 실행할 수 있습니다.)

    tar jxvf android-emulator-1.0_r2.tar.bz2

3. 도스창에서 android-emulator-20081210 디렉토리에서 Confiure 및 빌드를 합니다.

    sh build-emulator.sh

정상적인 경우에는 다음과 같이 하면 빌드 과정이 끝납니다. 그러나, 앞에서도 언급했듯이 이번 버전에 약간의 버그가 있기 때문에 다음과 같이 Patch 를 해주셔야 합니다.

1. Copy qemu\android\config\windows\config-host.h file to qemu\config-host.h.

2. Remark the line 476 in qemu\Makefile.android
   
   #LOCAL_LDLIBS += -lm -lpthread

3. Add the Icon to execution file(emulator.exe). 
    Modify the qemu\android\build\host_executable.make

   
Add to line 32: 
       windres images/android_icon.rc -I images -o images/android_icon.o   
       $(hide) $(LD) $(PRIVATE_LDFLAGS) -o $@ $(PRIVATE_LIBRARY) $(PRIVATE_LDLIBS) images/android_icon.o

4. Rebuild in qemu Directory
    
    make
    
이상과 같이 하면 qemu\objs Directory 에 emulator.exe 가 생성될 것입니다.

이제, Android SDK 1.0, Release 2 를 다운로드(http://dl.google.com/android/android-sdk-windows-1.0_r2.zip) 받은 다음, emulator.exe 를 변경하시면 새로 컴파일한 emulator 로 실행하실 수 있습니다.

부족한 부분이 많지만 끝까지 읽어주셔서 감사합니다...



   
 
이전 1 2 다음