이번에 안드로이드의 리눅스 기반 애플리케이션 만들기에 도전을 해보았습니다.
리눅스를 기반한 안드로이드 플랫폼 개발을 위해선 C언어를 우선 알아야 합니다.
C언어 정도는 Java를 알면 금방 배우는 쉬운 언어입니다^^
C언어를 알았으면 리눅스 기반의 안드로이드 애플리케이션을 만들때 필요한 크로스 컴파일용 툴 체인(Tool Chain)을 설치해야합니다.
툴체인은 android-group-korea의 Download에 여러가지 종류가 있는데 그 중 하나인 arm-cortex_a8-linux-gnueabi-20100108.1030.tar.bz2 을 다운로드 받아 Ubuntu 10.04에 툴 체인을 설치하였습니다.
(※ Tool Chain설치는 [common]Kandroid Toolchain Ver.20090108 for Cortex-A8를 참고하시면 됩니다.)
툴체인을 설치 후엔 아래와 같이 C언어 코드(hello.c)를 작성합니다.
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("Hello, Android!\n");
return 0;
}
코드 작성후 아래와 같이 컴파일 합니다.
저는 arm-cortex_a8-linux-gnueabi-20100108.1030.tar.bz2 를 다운 받아서 arm-cortex_a8-linux-gnueabi-gcc가 들어갔습니다. 툴체인의 버전에 따라 이름이 다르긴해도 툴체인의 컴파일러 실행파일 뒤에는 gnueabi-gcc가 붙습니다.
studioego@studioego-desktop:~/working$ arm-cortex_a8-linux-gnueabi-gcc hello.c -static -o hellostatic
컴파일을 하고 나선 컴퓨터에서 실행하려면 안됩니다. 이유는 컴퓨터(x86)용으로 컴파일 한 것이 아니라 안드로이드용 기계(arm)용으로 컴파일되어 돌아가지 않을뿐.
studioego@studioego-desktop:~/working$ ./hellostatic
bash: ./hellostatic: cannot execute binary file
위의 실행파일을 실행시키려면 x86용으로 컴파일을 하지 않았기 때문에 실행이 되지 않습니다.
컴파일하여 나온 결과파일을 안드로이드폰인 제 hTC Desire에 넣어보고 실행을 하겠습니다.
studioego@studioego-desktop:~/working$ adb push hellostatic /data/ch13
614 KB/s (586197 bytes in 0.931s)
studioego@studioego-desktop:~/working$ adb shell
# cd /data/ch13
# chmod 777 hellostatic
# ./hellostatic
Hello, Android!
#
위의 화면에서 나온 것 처럼 Hello, Android!가 실행됩니다.
그리고 휴대폰에서 터미널을 띄어넣고 hellostatic을 실행해도 똑같은 화면이 나옵니다.
단순한 애플리케이션이지만 C언어로도 Android 어플을 만들수 있다는 것을 보여줍니다.
여기까지 경지에 오려면 툴체인의 개념을 잘 알아야 하던데, 아직 저도 툴체인쪽 개념은 젬병 ㅡㅡ;;