예전에 했던 것인데 까 먹고, 다시 했는데 또 까 먹고... 정리 차원에서 글을 적어 봅니다.


제목은 Android에서 "hello world" 찍기 입니다.


일단 개발 환경은 OS : ubuntu 14.04 TLS로 가정하겠습니다.




PC와 Android폰을 어떻게 해서든 연결합니다. 가끔 PC와 케이블 접속의 문제로 접속이 되지 않을 수도 있는데, 케이블이 5,000원밖에 하지 않으니 시내에 나가서 새로운 케이블를 구매하여 연결해 봅니다.

Screenshot from 2015-10-24 03:14:56.png




"adb shell" 명령어를 통하여 PC에서 해당 단말기에 접속이 제대로 되는지를 확인합니다.  adb 명령어가 실행되지 않았을 경우에는 "sudo apt-get android-tools-adb" 명령어를 통해 adb를 설치하도록 합니다.

Screenshot from 2015-10-24 03:12:01.png




PC는 Intel 기반, Android는 ARM 기반. 당연히 빌드가 안되겠죠? 다음 항목을 어떻게 해서든지 설치하도록 합니다.

Java JDK : "sudo apt-get install default-jdk"

Android SDK : http://developer.android.com/sdk

Android NDK : http://developer.android.com/ndk

Ant : http://ant.apache.org




저 같은 경우에는 ~/android/Sdk, ~/android/Ndk, ~/android/Ant 에 설치하였습니다. 각각의 화면 스샷은 다음과 같습니다.

Screenshot from 2015-10-24 03:25:21.png

Screenshot from 2015-10-24 03:25:27.png

Screenshot from 2015-10-24 03:25:31.png




이제 hello_world를 찍어 보도록 하겠습니다. 소스 코드는 다음과 같습니다.


#include <stdio.h>


int main() {

printf("hello_world!!!\n");

}




g++에 대응 하는 빌드 명령어가 바로 "arm-linux-androideabi-g++"입니다. 물론 Android 기기에 따라 본 명령어가 달라질 수 있습니다. 이 파일은 Ndk 폴더 아래에서 검색해서 찾아 보면 됩니다. 그리고, include folder(/usr/include 에 대응하는) 옵션(INC) 을 명시해 주고, 기타 링크와 관련된 옵션을 설정해 주기 위해 "--sysroot" 옵션을 주도록 합니다. 이에 따른 makefile을 정리하여 올립니다.

CC = /root/Android/Ndk/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ 
INC += -I/root/Android/Ndk/platforms/android-9/arch-arm/usr/include
SYSROOT = /root/Android/Ndk/platforms/android-9/arch-arm/

hello_world: hello_world.o
$(CC) --sysroot=$(SYSROOT) -o hello_world hello_world.o

hello_world.o:
$(CC) -c $(INC) hello_world.cpp

clean:
rm -rf hello_world
rm -rf hello_world.o




"make"를 때려서 컴파일(hello_world.o) 및 링크(hello_world) 과정이 제대로 되는지 확인해 봅니다.
Screenshot from 2015-10-24 03:31:22.png



"adb push hello_world /data/gilgil" 명령어를 통해서 hello_world 실행 파일을 Android 단말기에 실행 파일을 올립니다. 물론 단말기에서 "/data/gilgil"이라는 폴더가 이미 생성되어 있어야 하고 write가 가능하도록 권한이 설정되어 있어야 합니다.
Screenshot from 2015-10-24 03:33:25.png



 "adb shell" 명령어를 통해서 해당 단말기에 접속한 다음 hello_world를 실행해 봅니다.
Screenshot from 2015-10-24 03:35:16.png



다운로드 : hello_world.tar.gz