반응형

이전 포스트에서 실행된 프로젝트가 어떻게 구성되어 있고 어떤 코드에 의해 보여지고 있는지 알아보겠습니다.

 

C와 Java만 학습하신 분들은 open 되어 있는 2개의 파일에서 먼저 'Hello world!"라는 글씨를 찾고 계실지도 모릅니다. 하지만 아무리 찾아봐도 화면에 보여지는 'Hello world!"라는 문구가 보이질 않으실 겁니다. 심지어 main() 메소드도 보이질 않아 당황했을지도 모릅니다. 사실 제가 처음 안드로이드를 접했을 때 했던 행동입니다.

 

 우선 알아둘 것은 안드로이드는 C나 Java와 다르게 프로그램의 시작점인 main() Method가 없습니다.

"뭐야!? 그럼 어디서부터 시작이야?? 그냥 자바 소스파일이 하나니까 그것 부터 시작하나??" 그럴리가 없겠죠. 우선 이런 구조적인 흐름에 대한 생각은 접어두고 화면에 글씨가 보여지는 주요 코딩부분만 알아보겠습니다. 나머진 차차 설명드리겠습니다.

 

 우선 아래 그림처럼 Package Explorer에 'Hello'라는 이름의 프로젝트가 보입니다. 안에 엄청 많은 폴더와 파일들이 보이죠. 심지어 자바로 안드로이드 프로그래밍을 한다면서 java파일만 있는 것도 아니고요. 답답해 집니다. 해결해 보죠.

 

 

 프로젝트 구성파일에 대한 설명은 잠시 뒤에 하고 open되어 있는 파일 2개를 통해 화면에 보여지는 과정을 알아보겠습니다.

 

지속적으로 언급했듯이 안드로이드 어플은 Java언어로 개발합니다. 당연히 java 소스파일의 코드 내용으로 동작하게 되어있죠. 저는 보통 프로그램을 처음 공부하는 친구들에게 이렇게 코드를 이렇게 해석하도록 유도합니다. 

 

"프로그램을 만든다는 것은 요리로 비유하면 레시피를 만드는 것이다. 즉, 본인이 어떤 음식을 완성하는 순서를 글로 써놓는 것이다. 프로그램을 실행시키는 컴퓨터는 단순한 요리사다. 이 요리사는 만드는 능력은 좋은데 창조는 못한다. 그리고 중요한 것. 한번에 두가지 작업을 하지 못한다. 그렇기 때문에 레시피는 요리를 만드는 순서대로 반드시 작성되어 있어야 한다. 심지어 냄비와 칼을 준비해야 한다는 것도 써놓아야 한다. 냄비에 물을 넣으라고 쓰고 다음줄에 냄비를 준비하라 라고 쓰면 안된다. 요리사(컴퓨터)는 무조건 순서대로 진행한다."

 

 프로그램을 좀더 깊이있게 학습하면 위에 소개한 '단순한 요리사'가 아닌 멀티플레이어 요리사(?)를 만나게 되는데 그건 나중에 소개하고 우선 처음 코드를 접할때는 위의 방법으로 설명합니다. 여기도 마찬가지 입니다. 아직 설명 못한 부분이 많지만 우선 보이는 java 소스파일은 하나이니 어떻게 시작되는 건지는 모르겠지만 이 소스파일이 실행된다는 것은 유추할 수 있겠죠. 

 

Open되어 있는 'MainActivity.java'를 보겠습니다.

package com.andsoft.hello;

 

import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;

 

public class MainActivity extends Activity {

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }

 

 

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.

        getMenuInflater().inflate(R.menu.main, menu);

        return true;

    }

    

}

 

 알수없는 코드들로 보이실지 모르겠지만 새로운 명령어를 배우는게 아닙니다. 위 코드는 java언어로 작성된 것입니다. 당연히 Java언어의 문법 규칙을 따르고 있습니다. 가끔 강의를 하다보면 Java를 학습한 친구가 안드로이의 문법을 모르겠다고 말하는 경우가 있습니다. 물론 구조나 원리는 아직 배워야 하지만 실제 어플의 동작을 결정하는 코드의 작성은 자바와 문법적 차이가 없습니다. 아니 그냥 자바 문법입니다. 자바를 어느정도 아시는 분이 지금 이 코드를 보고 해석을 못하는 것은 문법을 몰라서가 아니라 사용되어지고 있는 클래스들과 메소드들을 몰라서 입니다. 즉, 레고 블럭을 만들때 네모모양이나 세모 모양의 블럭만 가지고 만들어 봤는데 동그란 모양의 블럭이 내 앞에 있는 겁니다. 어떻게 쓰는지 모르겠죠. 하지만 한두번만 사용된 예를 보여주면 어렵지 않게 여러곳에 사용할 수 있습니다. 중요한 건 레고 블럭은 아무리 다양한 모양이 있어도 조립하는 방식은 같다는 것이죠. 그래서 남녀노소 누구나 기본적인 블럭 조립방법만 익히면 새로운 모양의 블럭을 만나도 용도만 알면 조립할 수 있다는 것이죠. 자바가 대표적으로 이런 구조로 되어있죠(정확히는 OOP). 위 코드를 보면 클래스나 메소드의 이름들은 생소하지만 코딩 방식은 자바로 개발할 때와 같다는 것이죠.  

 

 세부적인 것은 차후에 설명드리고 우선 MainActivity라는 이름의 클래스가 선언되어 있다는 것을 알 수있습니다. 일단 코드 전체에 클래스가 이거 하나 선언되어 있으니까 이 클래스가 객체로 만들어 져서 화면에 글씨를 출력한다는 것을 유출할 수 있습니다.

 

 public class MainActivity extends Activity{

....

}

 

 클래스의 선언부에 extends가 들어간 걸로 봐서 Activity라는 클래스를 상속해서 클래스를 만들고 있다는 것을 알수 있습니다. 나중에 설명드리겠지만 바로 이 상속받은 'Activity' 클래스가 화면출력을 담당하고 있는 클래스 입니다. 이 클래스를 상속 받음으로서 화면에 무엇인가를 보여주기 위한 수 많은 준비 코드를 생략할 수 있는 것이죠. 우리는 어떤 방법으로 화면에 보여지는 가는 고민할 필요없이 그냥 무엇을 보여줄까만 고민하면 되도록 만들어 놓은 클래스입니다. 자세한 설명은 다음에 다시 하도록 하겠습니다. 

 

 @Override

    protected void onCreate(Bundle savedInstanceState) {

......

    }

 

@Override

    public boolean onCreateOptionsMenu(Menu menu) {

.......

    }

 

 클래스 안에 두개의 메소드가 보이며 '@Override'가 보이는 걸 보면 이 두개의 메소드는 상속받아 온 Activity 클래스의 메소드라는 것을 알 수 있습니다. 메소드의 이름만으로도 대충 역할을 짐작할 수 있겠죠. onCreate() 메소드는 '만들어 질때' 라는 의미니까 이 메소드는 화면이 만들어질때 호출되는 메소드라는 것으로 유추해 봄직 합니다. 메소드명이 'on'으로 시작되는 메소드는 대부분 callback 메소드인 경우가 많습니다. callback 메소드는 일반 메소드와 다르게 여러분이 호출을 하는 것이 아니라 운영체제 즉, 안드로이드가 어떤 상황이 되었을때 호출하는 것을 말합니다. 자바 학습을 충실히 하셨다면 아시리라 생각됩니다. 안드로이드에서는 이 callback 메소드의 활용이 무엇보다 중요합니다. 앞으로 배우게 되겠지만 가물가물 한 분은 다시한번 시간을 들여 callback에 대한 정리해보시기 바랍니다.

 결국 이 메소드가 어플이 실행되고 화면이 만들어지면 호출되니까 이 메소드 안에 보여질 내용물을 작성해 놓았겠구나. 라고 생각하실 수 있다면 센스 만점입니다. 정답입니다. 이 메소드 안에 보여질 내용물을 결정하여 MainActivity 클래스에게 설정해 주면 됩니다.

 

 @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState); // 부모클래스의 메소드를 호출하는 것이니까 우선 패스

        setContentView(R.layout.activity_main); // 보여질 내용물(뷰)을 설정

    }

 

 이 메소드의 매개변수는 나중에 다시 하겠습니다. 저 객체의 역할은 갑작스럽게 화면이 종료되었을 때 이전 상태를 저장하고 있는 녀석이다 정도로만 이해하시고 넘어가겠습니다. 여러분이 엑셀에서 어떤 작업을 하다가 갑자기 다운되었을 때 다시 실행시키면 마지막 상태가 자동으로 저장되어 보여지는 경우가 있죠. 그런 역할을 저 매개변수가 한다 정도로 이해하기시 바랍니다. 결국 이 메소드안에서 super를 이용하여 부모클래스의 메소드에게 매개변수를 전달하는 부분을 제외하면 딱 하나의 메소드 호출문만 있는 겁니다.

 

 코드를 보면 'setContentView()'라는 메소드를 호출하고 있고 매개변수로 'R.layout.activity_main'을 전달하고 있다는 것을 알 수 있습니다. 중요한건 저 'setContentView()'라는 메소드를 우리는 만든 적이 없다는 것이죠. 그렇다는 것은 이 메소드가 부모 클래스의 메소드라는 것이고 자식 클래스는 부모클래스의 멤버를 마음대로 사용할 수 있으니 'setContentView()'를 만들지 않고 사용하고 있다는 것을 확인할 수 있습니다. 이 'setContentView()'메소드가 어떤 역할을 하는지 배운적은 없지만 이름만으로도 유추가 어느정도 가능하리라 봅니다. 대부분의 API들에서 제공하고 있는 클래스들은 변수명이나 메소드명 만으로 그 의미나 역할을 짐작할 수 있도록 명명하고 있습니다. 그럼 유추해 보죠. 먼저 'set'으로 시작하고 있으니 뭔가를 설정한다는 것이고 'Content'라는 단어는 내용물이고 'View'는 보이는 것 또는 보여지는 것이니까. 종합해 보면 액티비티가 화면 출력을 담당하고 있는 클래스이니까 이 클래스에게 명령을 내리고 있는 것이네요. "화면에 보여지는 내용물을 설정하겠다. 그 내용물은 매개변수로 전달하겠다." 라고 해석할 수 있을 것 같습니다. 안드로이드에서 화면에 무엇인가를 보여줄 때 반드시 알고 있어야 하는 클래스가 Activity와 View입니다. 나중에 다시 설명하겠지만 안드로이드에서 View라는 용어는 화면에 보여지는 어떤 것(이미지,텍스트,버튼 등)을 지칭합니다. 우리가 인테리어를 할 때 벽에 액자를 걸거나 벽장을 설치 했다고 했을 때 벽을 액티비티 즉, 화면이라고 보면 장식되어 있는 액자나 벽장 또는 화분 같은 것들을 뷰라고 합니다. 다음 강좌에서 다시 보기로 하고 일단 이 메소드가 결과적으로 화면에 글씨를 보여주게 하는 결정적인 메소드라는 것을 알 수 있습니다. 가장 중요하고 기본적인 메소드라고 할 수 있겠죠. 전체적으로 종합해보면 프로젝트가 실행되면 당연히 화면에 무엇이든 보여야 하니까 화면출력을 담당하는 액티비티 클래스의 객체가 만들어 질 것이고 이 객체가 화면을 만들 때 'onCreate()'라는 메소드가 호출되며 이 메소드 안에서 'setContentView()'메소드를 호출 함으로서 화면에 보여질 내용물이 정해진다는 흐름을 해석할 수 있었습니다. 

 

 그럼 화면에 보여지는 내용물은 무엇일까요? 

'setContentView()'메소드의 매개변수를 전달한 'R.layout.activity_main'이라는 코드가 무엇인가? 이에 대한 설명은 다음에 하고 뭔지는 모르겠지만 이름을 보니 어디서 본 적이 있는 것같습니다.

 

 처음 프로젝트를 만들었을 때 자동으로 open되어 있던 파일이 2개 였던거 기억하시죠? 우린 그 중에 'MainActivity.java' 파일을 보고 있었죠. 이 파일 말고 옆에 열려있는 'activity_main.xml'파일이 보이시나요? 예전 버전에서는 이 파일만 open해줬었습니다. 

 

아무튼 'setContentView()'메소드의 매개변수를 전달한 'R.layout.activity_main' 코드가 이 xml파일을 의미하고 있다고 유출할 수 있습니다. 단지 표시 방식이 파일이름과 확장자가 아니라서 이상해 보일 수 도 있는데요. 이건 나중에 다시 설명드리죠. 잘은 모르겠지만 화면에 보여질 내용물르 설정하라는 'setContentView()'메소드에게 이 파일을 전달했으니 화면에 'Hello world!'라는 글씨는 이 xml파일 안에 써져 있는 것 같습니다. 그럼 'activity_main.xml'을 보겠습니다. 파일을 선택하시면 아래 그림처럼 애뮬레이터의 화면에 보여졌던 모습과 같은 모양의 화면이 보여집니다.

 

 

 "아! 결과적으로 이 xml파일에서 만든 화면이 어플이 실행 되었을때 보여지는 화면이구나." 라고 이해하시면 됩니다.

 

처음 프로젝트를 생성했을 때 이 2개의 파일을 open해 주는 것도 이 2개가 여러분들이 화면에 무엇인가를 보여줄 때 건드려야 하는 파일들이기 때문입니다. 우선은 우리가 생성한 프로젝트가 이런 코드들에 의해 실행 되고 있다는 정도만 설명 드렸습니다.

 

 우리는 아직 프로젝트안에 있는 저 많은 파일들에 대해 알지 못하며 프로그램이 실행될 때 가장 중요한 시작점도 역시 알지 못하고 있습니다. 자바를 어느정도 알고 있으신 분들은 저 자바파일만 보면 더더욱 혼란스러울 수도 있습니다. 우리가 본 'MainActivity.java' 소스파일은 그 어디에도 MainActivity Class를 객체로 만들지 않고 있다는 것이죠. 클래스를 아무리 잘 만들어도 객체를 만들지 않으면 의미가 없죠. 

 

 자. 이제 본격적으로 안드로이드 프로젝트에 대해 알아봐야겠죠. 다음 포스트에서 뵙겠습니다.

반응형
반응형

 이전 포스트를 통해 프로젝트를 생성하셨다면 아래와 같은 그림이 보이실 겁니다.

 

 

 처음 시작하시면 프로젝트 생성과정에서 만들었던 java 소스파일과 xml 리소스 파일이 자동으로 열려있으실 겁니다. 센스 있으신 분들은 이클립스가 자동으로 이 2개의 파일을 open한 상태로 보여주는 것 만 보고도 예상할 수 있으실 겁니다. 맞습니다. 이 2개의 파일이 지금 만들고 있는 어플의 화면 출력을 담당하고 있는 주요 파일입니다. Package Explorer에 보이는 저 많은 파일 중에서 이 2개의 파일을 수정하면 여러분만의 어플을 만들 수 있다는 것이지요. 물론 단순히 text를 보여주고 끝나는 어플은 없겠죠. 이 2개의 파일만가지고 만들어진 어플은 없습니다. 앞으로 배워야 할 것들이 많겠죠. 차근차근 알아보기로 하죠.

 

 우선 현재 만들어진 프로젝트는 이미 화면에 'Hello world!'라는 Text를 출력해주도록 프로그래밍 되어 있습니다. 어느 어플을 만들던지 90%는 이 상태에서 시작합니다. "어?! 난 글씨말고 이미지를 출력할건데...미리 텍스트를 출력하도록 프로그래밍 하면 어쩌라고???"라고 생각하실지도 모르겠네요. 좀더 추가적으로 설명하자면 자동으로 만들어진 프로젝트는 Text의 출력이 목적이 아니라 스마트폰의 화면에 무엇인가 보여질 것들을 출력할 수 있도록 일종의 연결작업을 준비 해 준 것이라고 생각하시면 됩니다. 현재 잘 연결되어 있다는 것을 보여주기 위한 예시로 Text 하나를 출력하도록 되어 있을 뿐입니다. 당연히 Text 를 이미지로만 바꾸면 화면에 원하는 그림이 보여질 겁니다. 아직 구조를 설명하지 않아 이해가 쉽지 않으니 이제부터 구조를 파악해 보죠.

 

 먼저 Package Explorer에 보이는 수 많은 파일들은 각 각 담당하고 있는 영역별로 분리되어 프로그래밍 되어 있습니다. 저 파일들이 각자 어떤 역할을 하는지를 알려면 우선 결과가 어떻게 되는지를 봐야 알기 쉬우니 먼저 실행을 시켜보도록 하겠습니다. 앞에서 언급했듯이 현재 만들어진 프로젝트는 이미 Text하나를 출력하도록 프로그래밍 되어 있습니다. C나 Java에서 콘솔출력 프로그래밍을 하실 때는 우선 메인함수를 만들고 그 안에 글씨를 출력하기 위해 printf()나 System.out.println()같은 메소드를 작성해 주셔야 했습니다. 안드로이드는 이미 이 단계까지 프로그래밍 되서 만들어 집니다. 즉, 단 한줄의 코드 입력 없이 단순하지만 스마트폰에서 동작되는(Text 하나 출력) 어플을 하나 만드신 겁니다. 단지 마우스 클릭 몇번으로..

 

 자. 그럼 실행을 한번 시켜보시죠. 스마트폰을 바로 연결하셔도 되고 애뮬레이터를 실행시켜도 됩니다. 전 보여줘야 하니 답답하지만 애뮬레이터로 실행하겠습니다.

 

 실행 방법은 Java와 다르지 않습니다. eclipse에서 run 버튼을 누르시면 됩니다. 

 

아래와 같이 어떤 방법으로 'Hello'라는 이름의 프로젝트를 실행할 것인가 물어보는 팝업이 보여집니다.


 

eclipse를 사용하신 분들은 모두 알고 게시겠죠. 각 프로젝트마다 처음 run을 할때만 보여지고 이후 부터는 보여지지 않습니다.

당연히 'Android Application'을 선택하시면 'OK'버튼이 활성화 됩니다. 

 

 만약 코드를 수정하고 저장 되지 않은 파일들이 있다면 수정된  내용으로 저장할지를 물어보는 창이 보여집니다. 'Yes'를 선택하시면 실행이 됩니다. 물론 우리는 코드를 단 한 글자도 수정하지 않았으니 저장여부에 대한 확인 창 없이 바로 실행됩니다.

 

 여러분이 프로젝트를 생성할 때 선택했던 Target Version에 해당하는 애뮬레이터가 자동으로 실행됩니다. 애뮬레이터를 만드는 것은 다른 강좌나 인터넷을 통해 알아보시기 바랍니다. 본 강좌의 목적과 다소 차이가 있어서 나중에 부록으로 포스팅하고자 합니다. 지금 설명하는 이 단계도 그냥 확 건너뛸까 하다가 구조를 이해하는 부분이라서 다루고 가는 겁니다. 이 점 양해바랍니다.

 

 우린 앞에서 선택 했듯이 Google(api14)버전의 애뮬레이터로 진행 할 겁니다. 

 

 애뮬레이터는 처음 만들어지는데 오래 걸리죠. 잠시 담배나 한대 피고..올..정도까지는 아니구요. 컴퓨터 성능에 따라 다르겠죠.

애뮬레이터가 처음에 늦게 만들어 지는 것은 어쩔 수 없습니다. 이미 다른 강좌에서 기초를 익히신 분들은 알 고 있듯이 안드로이드는 Linux 운영체제를 기반으로 만들어 져 있습니다. 당연히 처음에 가상의 Linux운영체제부터 만들어지는 과정이 있어서 오래걸릴 수 밖에 없습니다. 그냥 스마트폰 전원을 킬때 오래 걸리는 것과 같다고 생각하셔도 됩니다. 느리다고 스트레스 받지마세요.

 대신 한번 만들어진 애뮬레이터는 그 날 개발하는 동안은 끄지 마세요. 당연히 개발 과정에서 여러번 실행시키실 텐데 한번 켜 놓으면 그 다음 부터는 켜져있는 애뮬레이터에서 업로드와 인스톨 과정만 진행하면 되기 때문에 빠르게 결과를 보실 수 있습니다.

 좀 더 자세한 내용은 기회가 될 때 포스팅 할 예정입니다.

 

 Android 개발환경을 구축하고 처음 실행시키셨다면 아래와 같은 Log를 보겠느냐 라는 팝업창을 보시게 됩니다.

Log는 디버깅 과정에서 매우 중요한 역할을 담당하니 되도록 기본상태인 'Yes'를 선택하시기 바랍니다. Logcat은  강좌를 진행하면서 소개할 예정입니다. 처음에 한번만 보여지며 이 후 같은 workspace안에 프로젝트를 생성할 경우에는 팝업되지 않습니다. 나중에 언제라도 변경 가능합니다.

 

 자. 잠시 기다리시면 아래와 같이 애뮬레이터가 보여질 겁니다. 버전에 따라 그 모양에도 약간씩 변화를 주고 있습니다.

   

 스마트폰과 같이 하단 중앙에 있는 자물쇠를 오른쪽으로 드래그 하시면 잠금상태가 해제됩니다.

잠금이 해제되면서 오른쪽 그림처럼 우리가 만든 프로젝트의 실행 결과가 보여집니다. 스마트폰에서도 역시 오른쪽 Control Button 영역을 제외한 화면 영역을 보실 수 있으실 겁니다. 

 

 오른쪽은 되돌아 가기 버튼은 누르시면 홈 화면이 보여집니다.

 

홈 화면에서 하단 중앙에 있는 앱버튼을 누르면 어플 목록이 보여집니다.



 목록을 보시면 여러분들이 실행시킨 'Hello' 어플이 설치 되어 있는 것을 볼 수 있습니다. 한번 인스톨 한 것이니 애뮬레이터의 전원르 껏다 켜도 여전히 설치 되어 있습니다. 실제 스마트폰에 어플 다운받아 설치 했다고 생각하시면 됩니다. 마켓이 아니라 스마트폰의 USB케이블로 다운받아 설치했다고 생각하시면 됩니다. 당연히 설치된 어플을 지우는 것은 애뮬레이터나 스마트폰의 App Manager에서 삭제하시면 됩니다.
      

앞에서 설명드린데로 프로젝트를 생성할 때 선택했던 항목들에 의해 드로이드 인형의 아이콘과 여러분이 기입한 Application Name으로 어플이 설치된 것을 볼 수 있습니다. 이 아이콘과 이름은 설치된 후에도 다시 run시켜서 인스톨시키면 변경이 가능하니까 어플을 다 만들고 변경하셔도 됩니다.

 

 실제로 어플을 실행하듯이 이 아이콘을 클릭하면 어플은 다시 실행됩니다. 이 과정은 인스톨이 아니죠. 그냥 실행입니다. 이클립스에서 run을 하시는 것은 새롭게 업로딩과 인스톨, 그리고 실행까지를 의미하는 것입니다. 실행과정을 구분하시기 바랍니다.

 

 이미 보셨듯이 우리가 만든 프로젝트는 화면에 'Hello world'라는 글씨를 출력하고 있고 제목으로 우리가 입력한 Application Name이 보여지고 있습니다. 그럼 어떻게 이런 화면을 출력할 수 있었는지 프로젝트 파일을 살펴보겠습니다.

 

 이번 포스트가 너무 긴 듯합니다. 다음 포스트에서 이어하도록 하겠습니다.

반응형
반응형

 안드로이드 게임을 만들기에 앞서 안드로이드의 프로젝트를 만드는 방법과 구조를 알아보겠습니다. 원래 본 강좌는 게임을 개발하기 위한 소스만 설명하고자 했지만 안드로이드에 대해 한번도 다루어보지 않은 사람이 있을 수도 있겠다 싶어서 기본 구조만은 설명하고 본격적인 강좌를 시작하고자 합니다. 다시 말씀드리지만 본 강좌는 기초적인 문법 및 구조는 조금이지만 알고 있는 사람들을 기준으로 진행하고자 하였기 때문에 여기서는 아주 간략히만 설명하고자 합니다. 안드로이드 및 프로그래밍 언어를 처음 접해보신 분들은 지금은 그냥 저런게 있구나 정도만 이해하고 따라하시기 바랍니다. 다만, 어느정도 이해가 되야 제 설명을 좀더 정확히 인지할 수 있는 만큼 시간을 들여 다른 안드로이드 강좌도 학습해 보시기바랍니다.

 

 너무 알아서 학습해 와라 하는 식으로 말하는 것 같다고 느끼실수 있는데 사실 프로그래밍 언어를 학습하는 과정은 본인의 능동적 참여가 매우 중요합니다. 단순히 사용하는 문법만 강의한다면 두어개의 포스트로 끝내버릴 수 있을지 모릅니다. 즉, 문법이 많은 것보다는 그 문법을 어떤 순간에 어떻게 활용하는 가가 중요한데 이는 누가 노하우를 알려준다고 쉽게 익혀지는 것이 아닙니다. 정말 센서블한 몇몇 친구들은 아주 짧은 예제만 가지고도 훌륭히 활용하기도 하지만 대부분의 학습자들은 매우 많은 예제를 다루어 봄으로서 노하우 및 알고리즘이 형성됩니다. 실제 강의를 하다보면 한 기수에 한두명 정도 센스가 좋은 친구들을 제외하고 대부분은 활용에 오랜 시간과 노력이 요구되고 있습니다. 그리고 사실 프로그래밍 언어는 시중에 나와있는 책이나 이런 강좌를 통해서 혼자서 충분히 할 수 있습니다. 대신 시간이 오래걸리겠지요. 또 간혹 혼자 공부하다 보면 막히는 부분이 좀처럼 해결되지 않는 경우가 있을 수 있습니다. 그래서 사람들이 시간을 단축시키고 학습을 좀더 효과적이고 체계적으로 하기위해 학원이나 교육기관을 다니는 것이죠. 이것도 좋은 방법입니다. 하지만 제일 중요한 것은 어떤방식으로 학습을 하든 본인의 능동적 학습이 선행되야 좋은 결실을 맺을 수 있다는 것을 명심하시기 바랍니다.

 

  자. 그럼 이제부터 본격적으로 안드로이드 게임 개발을 위한 첫걸음을 걸어보겠습니다.

 

 먼저 앞으로 만들어 볼 프로젝트들을 한곳에 보관하기 위해 workspace 라는 이름의 폴더를 적당한 위치에 만들고 여기에 보관시키도록 Eclipse의 경로를 지정해 주시기 바랍니다. 가급적 경로는 모두 영어이름으로 지정하시기 바랍니다. 구글에서 한글에 대한 지원을 많이 향상시켰지만 가끔 한글 경로로 인한 에러가 발생하기도 합니다. 윈도우의 컴퓨터 이름도 영어로 사용하길 권장합니다.

 

 우선 어느 프로그램을 학습하던 제일 처음 해보는게 화면에 'Hello'라는 글씨가 나오게 하는 것이니까 우선 그것부터 해보겠습니다. 보통 화면 입출력에 대해 많은 개발언어들이 손쉽게 가능하도록 만들어져 있다보니 대수롭지 않게 학습하시는 분들이 있는데 제가 생각하는 프로그램 언어의 학습은 우선 화면 입출력이 내가 원하는 모양으로 나올 수 있게 하는 것이 무엇보다 중요하다고 봅니다. 단순이 따라해 보니까 되는구나. 라고 넘어가시지 말라는 겁니다. 일단 C나 Java를 접해보신 분들은 콘솔창으로 원하는 결과를 출력하는 방식에 익술하실 겁니다. 하지만 안드로이드는 스마트폰에서 구동되어져야 하는 만큼 결과를 보여주는 곳이 콘솔창이면 안되겠죠. 그래서 안드로이드 개발은 결과를 보기위해 스마트폰이 필요합니다. 하지만 스마튼폰이 없을 수도 있고 많은 버전과 크기, 해상도를 가진 스마트폰을 종류별로 구비할 수도 없겠죠. 그래서 여러분들이 다운받아 설치하신 ADT에는 가상의 스마트 폰을 제공해 줍니다. 보통 '애뮬레이터'라고 하죠. 이 애뮬레이터를 버전, 크기, 해상도별로 수십대로 만들 수 있으니 문법도 학습하기 전에 스마트폰 부터 구비하실 필요는 없습니다. 애뮬레이터를 만드는 방법은 다른 강좌를 우선 보시고 따라 하시기바랍니다. 지금 여기서 설명하려면 그림작업때문에 시간적으로 너무 많이 소요되니 기회가 될 때 차후에 다시 포스팅하도록 하겠습니다.

 

 안드로이드 버전은 매년 새롭게 업데이트 되고 있기때문에 그 때 그때 변경하기보다는 하나의 버전을 정하고 그 버전으로만 설명하도록 하겠습니다. 버전이 바뀌더라도 기본적인 구성은 큰 변화가 없으니 크게 신경쓰지 않으셔도 됩니다. 본 강좌에서는 API-14버전으로 예제를 진행하겠습니다. 아이스크림 샌트위치 버전이고요. 현재 가장 많이 분포되어 있는 버전입니다. 조만간 최신버전인 kitket이 더 많아 지겠죠.  우선 API-14버전으로 애뮬레이터를 준비해 주시고 실제 스마트폰을 연결하셔도 좋고요. 아무래도 애뮬에이터는 동작속도가 느리니까 좀 답답하실 수 있습니다. 

 

 자 그럼 이제 시작하죠.

 

 제일 먼저 프로젝트를 만들어야 하니 Eclipse의 메뉴에서 File->new->Android Application Project를 선택합니다.

 


아래와 같이 팝업윈도우가 나오면 프로젝트 이름과 패키지를 지정하시기 바랍니다. C나 java의 경우에는 결과를 콘솔창에 단순하게 텍스트형태로 보여주기 때문에 간단하게 원시파일(ex. aaa.c or aaa.java)만 만들고 컴파일 하면 됬지만 안드로이드 어플개발은 이미 시작부터 결과창이 스마트폰이기에 간단하게 원시파일만 가지고 작동될 수 가 없습니다. 그래서 스마트폰 화면에 결과가 보여지기까지 상당히 많은 양의 프로그램을 해줘야 합니다. 이게 그렇게 간단할 리가 없겠죠. 그래서 개발자가 개발을 쉽게 하도록 하기 위해 기본적인 화면 출력과 환경설정까지는 해주는 프로그램 파일들을 미리 만들어 놨습니다. 이제부터 여러분들이 보시는 팝업윈도우는 이런 프로그램 파일들을 포함한 기본 프로젝트를 만들어 주는 일종의 마법사 입니다. 그래서 프로젝트 생성까지 여러단계가 있죠. 윈도우 프로그램을 해보신 분은 wizard를 아시겠죠. 그 일종이라고 보시면 됩니다. 

 

매년 새롭게 출시되는 버전에 따라 위 모양이 다를 수 있습니다. 모양과 위치를 익히지 말고 항목의 의미를 이해하시면서 항목의 내용을 입력하시기 바랍니다.

 

▣ 각 항목의 의미

ㆍApplication Name : 본인이 제작하고자 하는 어플(App)의 이름 (마켓에 배포할 때의 이름은 다르게 할 수 있습니다. ex. Angry Bird)

ㆍProject Name : 제작하고자 하는 어플의 프로그램파일들이 저장되는 폴더의 이름

ㆍPackage Name  

   - 같은 이름의 어플 이름이 있을 수 있기때문에 구별되기 위한 고유한 명칭(보통 회사 uri를 역으로 작성)

   - 반드시 모두 소문자로만 작성하며 하나 이상의 구분점(.)으로 작성해야 함

     ( 패키지명 사용불가 : abcd (적어도 하나 이상의 구분점이 있어야 함), com.Andorid (대문자 사용) )

   - 보통은 회사uri의 역순표기를 고정해 두고 각 프로젝트마다 프로젝트 이름을 추가하여 구분함.( ex. com.andsoft.어플이름 )

 

ㆍMinimum Required SDK : 본인이 제작한 어플이 구동되기 위한 최소 버전. 선택한 버전보다 이전 버전의 스마트폰에서는 실행안됨

ㆍTarget SDK : API 14 : 본인 어플을 구동할 실질적인 타겟 버전. 선택한 버전을 우선으로 애뮬레이터가 실행됨.

ㆍCompile With : 프로그램을 만드는데 사용한 API에 대한 컴파일을 어느 버전으로 할 것인가를 선택. 가급적 최신버전 선택

        ( 본 강좌에서는 최신버전인 kitket 대신 API-14버전으로 선택. 'deprecated'되었다는 표시가 보기 싫어서-나중에 추가 설명) 

ㆍTheme : 테마설정. 어플에 적용되는 모양의 기본 틀 테마를 선택하는 항목으로 강좌를 진행하면서 차차 설명하고자 합니다.

 

※ 각 항목에 대해 좀 더 자세히 알고 싶다면 안드로이드 디벨로퍼 사이트를 좀더 참고해 보시기 바랍니다.

 

 

 

일단 아래와 같이 입력해 보겠습니다.

ㆍApplication Name : Hello (직접기입) 

ㆍProject Name : Hello (Application Name 기입하면 자동 완성)

ㆍPackage Name : com.andsoft.hello ( 자동으로 com.example.hello 로 완성되므로 example을 andsoft로 변경해줄것)

     ※ com.example 을 사용하셔도 되지만 그 안에 이미 다른 예제들이 있어서 자칫 에러가 날 수도 있으니 반드시 바꿔주시기 바랍니다.

 

 ※ 각 입력항목의 끝에 있는 콤보버튼으로 선택

  ( 만약 아래 항목들이 보이지 않으면 해당 버전의 SDK가 없는 것이니 상단 툴바에 있는 sdk manager를 통해 다운받으세요) 

ㆍMinimum Required SDK : API 8

ㆍTarget SDK : API 14 : Android 4.0

ㆍCompile With : Google APIs (Google Inc.) (API 14)

  

아래 그림과 같이 입력하셨다면 Next 버튼을 누르고 다음단계로 넘어갑니다.


 

 

아래와 같은 팝업윈도우가 나올겁니다. 참고로 지금 여러분들이 선택하신 내용들은  프로젝트가 생성된 후에 언제라도 변경이 가능합니다.


이 창은 프로젝트의 속성을 지정하는 창입니다.

 

ㆍCreate custom launcher icon 

    - 어플을 설치하면 보여지는 아이콘의 모양을 사용자가 변경하고자 한다면 체크를 합니다.

    - Default로 check 되어 있습니다. 

    - check된 상태에서 Next를 누르면 좀 있다 보게될 icon 설정 단계창이 나오고 해제하시면 icon 설정 단계를 건너뜁니다.

 

ㆍCreate activity 

    - 화면에 보여지기 위해서는 activity라는 class를 만들어야 하는데 만들것인가를 선택합니다. ( activity 설명은 다음 포스트에서)

    - 기본 check 되어 있습니다.

 

ㆍCreate Project in Workspace

    - 생성할 프로젝트 폴더를 저장할 위치를 설정합니다.

    - 기본적으로 처음 여러분이 eclipse에 연결한 workspace폴더 안에 자동으로 앞 단계에서 설정한 Project Name의 폴더를 만듭니다.

 

※ 각 항목에 대해 좀 더 자세히 알고 싶다면 안드로이드 디벨로퍼 사이트를 좀더 참고해 보시기 바랍니다.

 

기본 check상태에서 건드릴 내용이 없으므로 변경 없이 그냥 Next를 누릅니다.

 

위에서 설명한 데로 Icon의 모양을 결정하는 팝업창이 나옵니다.


 

 이 창에서 아이콘의 모양을 바꿀수 있습니다. 이 창은 여러분들이 이것 저것 눌러보시는 것도 좋을 듯 합니다. 오른쪽에 보이는 드로이드 인형 모양의 이미지가 기본적으로 여러분이 만들 어플의 Icon입니다. 해상도별로 여러 사이즈의 이미지가 마련되어 있고 버전에 따라 저 모양도 바뀌고 있습니다.

 

 아이콘 변경은 나중에 언제라도 변경 가능하니 지금은 그냥 Next를 누루고 넘어가겠습니다.

 

화면 출력을 담당하는 Activity Class(추후 설명)를 만드는 단계의 팝업창이 보여집니다.

   

 

현재는 3가지 종류의 액티비티가 선택 가능합니다. 버전에 따라 추가되겠죠. 그냥 여러분이 만드는 액티비티의 기본적이 모양을 결정하는 것이라고 생각하시면 됩니다. 지금 여기서 3가지를 설명하긴 좀 이르니 지금은 기본적으로 선택되어 있는 Black Activity를 선택하고 Next를 누르겠습니다. 각 항목에 마우스를 클릭하면 파란색 음영처리로 선택된 것을 보여줍니다.

 

지금 선택한 Blank Activity는 이름 그대로 비어있는 액티비티를 선택한 것으로 오른쪽 옆에 preview로 보여지는 것처럼 액션바와 제목영역만 포함된 빈 화면을 만들어 내는 Activity 입니다.(강좌를 진행하면서 설명할 내용입니다.)

 

Next를 누르시면 선택한 Blank Activity를 만들기 위해 필요한 파일들을 생성하는 팝업창이 보여집니다.


 

앞에서도 설명한 데로 안드로이드는 C나 Java처럼 콘솔창에 출력하는 것이 아니라서 화면에 'Hello' 라는 글씨 하나를 출력하는데도 상당히 많은양의 프로그래밍이 필요합니다. Activity Class도 이를 위해 미리 만들어 놓은 Class 입니다. 여러분은 이렇게 만들어 져 있는 많은 Class들을 언제 어디에 사용할지를 익히시면 기본적인 어플제작이 가능해 집니다. 또한 이런 일련의 작업들을 하나의 파일안에 다 담아두면 프로그래밍을 하는 것도 어렵고 나중에 디버깅을 하는것도 상당히 어려울 수 밖에 없습니다. 그래서 안드로이드도 기본적으로 프로그래밍과 디버깅이 용이하도록 MVC(Model View Control)패턴으로 구조화하여 프로젝트를 관리합니다. 강좌를 진행하면서 설명드릴 예정입니다. 다음 강좌에서 좀더 자세히 설명하기로 하고 지금은 단순하게 의미만 소개하고 넘어가겠습니다.

 

ㆍActivity Name 

    - 안드로이드는 Java로 개발합니다. 당연히 java원시 파일을 만들어야 겠죠. 그 만들어질 java원시파일의 이름입니다.  

    - 여기서는 특히 화면에 보여지는 역할을 담당하고 있는 Activity Class를 상속한 java파일입니다.

    - Default로 'MainActivity'로 되어있으며 변경가능합니다. java에서 클래스 이름이라고 생각하시면 됩니다.

    - 주의할 점은 'MainActivity'라는 이름이 c나 java의 프로그램 시작점인 main() 함수를 의미하는 것은 아닙니다. *중요*

    - 'MainActivity.java' 라는 이름의 소스파일을 만들어 냅니다.

 

ㆍLayout Name 

    - 안드로이드에서는 화면에 보여질 내용물을 만들때 java언어로 하지 않고 xml 언어로 하기를 권장합니다.

    - xml언어로 하면 디버깅이 용이하고 내용물의 크기나 위치 같은 설정 변경이 용이 합니다. 다음 강좌에서 설명할 예정입니다.

    - 위에서 설정한 'MainActivity.java'와 연결(정확한  의미는 차후에)되어 있는 xml파일의 이름입니다.

    - 이름 변경은 가능하지만 관리가 용이하도록 Activity Name을 참고하여 이름을 선정하는 것이 좋습니다.

    - 기본적으로는 'activity_'로 시작하여 java file의 이름의 대문자를 기준으로 '_'구분자를 사용합니다.

    - 'activity_main.xml' 라는 이름의 리소스파일을 만들어 냅니다.

 

ㆍNavigation Type  

    - 버전 업에 따라 등장한 것으로 지금 설명은 의미가 없으므로 강좌를 진행하면서 설명하기로 하고 지금은 None상태로 두겠습니다.

 

 Default상태에서 변경할 내용이 없으므로 Finish 버튼을 눌러 프로젝트를 생성과정을 마치겠습니다.

 

Finish버튼을 누르고 잠시 기다리면 아래와 같이 프로젝트가 하나가 만들어 집니다. 

 

 

 

 일단 보시는 바와 같이 프로젝트 안에 너무 많은 폴더와 파일들이 보여서 답답해 집니다.

미리 겁먹지 마시기 바랍니다. 강좌를 잘 따라오고 나면 위 파일 구조가 매우 훌륭하게 구조화 되어 있다는 것을 알게 되면서 편하게 프로그래밍 하시게 될 겁니다. 

 

 자. 여기까지 따라 오셨다면 일단 시작은 한 겁니다. 이제 천천히 한걸음씩 어플 개발자가 되어 보겠습니다.

 

프로젝트 생성은 완료하였으니 이제 하나씩 그 구조를 파악해 보겠습니다. 다음 강좌에 뵙겠습니다.

반응형
반응형

 프로그램을 제작한다는 것은 결과적으로 영어로 된 글씨를 작성하는 것이지요. 사실 영어라고 해봤자 회화에서 쓰는 영어가 아니라 명령어 위주의 단어형태이기 때문에 영어를 잘해야 한다는 부담감은 갖지 마시기 바랍니다. 아무튼 영어로 정해진 문법에 맞추어서 만들면 되는데 컴퓨터 한테 말로 말해봐야 알아들을리 없겠죠. ( 음성인식도 아니고..) 그러니 글로 적어서 만들어야 합니다. 허공에다가 글씨를 쓸 수는 없겠죠. 글씨를 쓰려면 책상과 노트, 펜이 필요합니다. 다만 컴퓨터에게 종이로 써서 줄 수 없으니 컴퓨터 상의 종이에 글씨를 써야 되겠죠. 펜 대신에 키보드를 이용하고 종이 대신에 컴퓨터 상의 글 작성 프로그램을 사용하는 것이지요. 이렇게 프로그램 상에 정해진 문법으로 키보드를 이용해서 작성하는 것을 코딩(coding)이라 하는 것이죠. 이렇게 코딩을 하기 위해 사용하는 컴퓨터상의 종이는 메모장으로도 가능한데요. 가만히 생각해 보면 컴퓨터가 기계인데 여러분들이 코딩한 영어를 읽을 수 있을 리가 없겠죠. 컴퓨터는 전기적 신호가 있다/없다.를 나타내는 신호인 1,0 으로만 인식할 수 있는데요. 이를 2진코드 즉 기계어라고 합니다. 우리가 외국서적을 읽기 위해 번역을 하듯이 컴퓨터도 우리의 언어로 작성된 글을 기계어로 번역을 해서 인식합니다. 컴퓨터는 이 번역된 글씨를 읽어가면서 프로그램을 실행시키는 것이지요.

 

 사실 이 강좌를 읽고 있는 분은 이정도는 알고 있으실텐데 제가 개발 도구 준비를 하는 과정의 서두에 이 말을 하는 이유는 가끔 초심자들 중에서 본인이 프로그램을 만들기 위해 이클립스, 비주얼 스튜디오 등 각종 프로그래밍 도구를 사용하면서 정작 왜 쓰고 있는지 모르고 있는 사람들을 보기 때문입니다. 또 각각의 도구가 무엇을 해주는 것인지 모르고 사용하는 경우가 있어서 입니다. 

 지금 여기서 이에 대한 자세한 설명은 하지 않을 겁니다. 이는 이 강좌의 취지보다 좀더 기본적인 프로그램 강좌이니까요. 혹시 위 내용을 잘 모르시는 분이 있다면 별도의 학습을 통해 개념을 익히시기 바랍니다. 다만 안드로이드 어플 개발에 필요한 도구를 설치하면서 이게 왜 설치해야 하는지 간단히 코멘트하는 정도만 하겠습니다. 여러분들은 이 간단한 코멘트를 통해 코딩부터 프로그램 실행까지의 단계를 머리속에 그릴 수 있어야 합니다.

 

 자. 이제부터 어플 개발에 필요한 도구(프로그램)를 마련해 보도록 하겠습니다. 우리가 일반적인 문서작성을 하기위해 아래한글이나 MS워드가 필요하고 동영상을 보기위해 곰플레이어를 다운받아 설치하듯이 어플 개발을 할 수 있도록 몇가지 프로그램을 설치해야 합니다. 다행이 이때 사용하는 프로그램들은 모두 무료이기 때문에 처음 시작하는 입장에서 부담이 없죠. 모두 인터넷에서 다운받아 설치하면 됩니다.

 

 결론부터 말씀드리면 여러분이 설치하셔야 하는 프로그램은 아래의 4가지 입니다.

 

 1. JDK(Java Development Kit) : 자바 개발 도구  // www.oracle.com

 2. Eclipse : 자바 개발 오픈소스 프로그램 // www.eclipse.org

 3. Android SDK(Android Software Development Kit) : 안드로이드 소프트웨어 개발 도구 // http://developer.android.com 

 4. ADT(Android Development Tool) plug-in  : 이클립스에서 안드로이드를 개발 할 수 있도록 하는 추가 소프트웨어 // 이클립스에서 추가

 

 많은 강좌에서 위 프로그램들을 다운받아 설치하라고만 설명하는데 이렇다 보니 각각의 역할이 뭔지도 모르고 그냥 저렇게 있어야 하는구나 하고 넘어가는 사람들이 있습니다. 물론 별도의 설명을 통해 프로그램이 실행되는 과정을 설명하고 있지만 각각의 도구와 연결하여 설명을 하지 않다보니 구분을 못하는 사람들이 있는 모습을 종종 봅니다. 이 강좌에서 이를 자세히는 설명하지 않지만 그래도 각 장치가 무슨 역할 때문에 설치를 하는 구나하는 코멘트는 하면서 설명드리려고 합니다.

 

 1. JDK 설치 : 여러분이 영어로 작성한 글을 컴퓨터가 읽을 수 있도록 기계어로 변환하는 도구/ (자바실행환경 : JRE도 설치)

 2. Eclipse : 코딩을 할 수 있게 하는 도구(글씨를 쓰기위한 종이) / 프로그램 문법에 맞는지 검사하는 역활과 실행버튼도 포함

 3. Android SDK : 위 JDK가 자바 언어를 컴퓨터가 읽을 수 있게 했듯이 Android 언어를 컴퓨터가 읽게 해주는 도구

   - 사실 위 설명은 간단한 이해를 위한 설명인데 정석으로 설명하면 너무 오래 걸릴 것 같아서 줄여서 설명했습니다. 시작할 때는 이정도만 알아도 되지만 좀더 정확한 쓰임새를 이해하려면 다른 자료를 참고하시기 바랍니다.

 4. ADT : 기본적으로 Ecilpse는 자바 프로그램을 만들어주는 도구이기 때문에 좀더 확장된(?) 안드로이드 프로그래밍을 하려면 추가적인 도구들이 필요한데 ADT가 이 역할을 하는 겁니다.

 

- 간략히 설명은 드렸는데 지금은 단지 이런것을 하는 구나 정도만 알아두셔도 프로그램을 만드시는데 무리는 없을 겁니다. 자세한 내용이 알고싶으신 분들은 다른 강좌나 자료를 참고하시기바랍니다.

 

- 참고로 2012년 11월 부터인가 안드로이드 개발자 사이트( http://developer.android.com )안드로이드 개발 도구를 Bundle로 한번에 제공해 주기 때문에 1. JDK 설치후 2,3,4를 한번에 설치할 수 있도록 되었습니다. 참고하시기 바랍니다.

반응형
반응형

 여러분들이 컴퓨터라는 하드웨어를 쓰기 위해서 Windows라는 운영체제를 사용하듯이 스마트 폰이라는 하드웨어를 사용하기 위해서 운영체제가 필요합니다. "안드로이드"라는 것은 바로 이 스마트폰 용 운영체제를 말합니다. 여러분들이 안드로이드 어플을 개발한다는 것은 안드로이드 운영체제 상에서 구동되는 응용프로그램을 만든다는 것이지요.

 

 이 응용프로그램을 개발 할 때 사용하는 프로그램 언어가 java라는 것이지요. 이를 사용하지 않으면 안드로이드가 못 알아듣는 겁니다.

 쉽게말해 미국에서는 영어를 사용하고 한국에서는 한국어를 써야 한다는 것이지요. 안드로이드 운영체제는 자바 언어로 만들어진 코드를 이해한다 정도로 보시면 됩니다. 사실 미국에서도 한국어 통역사를 대동한다면 한국어로 말해도 알아듣게 할 수 있게죠. 그래서 요즘은 안드로이드 어플을 개발할 때 C계열 언어를 사용할 수도 있습니다. 물론 그에 따른 개발 환경(일종의 통역사)이 구축되어야 합니다.  뭐..이런저런 방법을 통해 어플을 개발 할 수도 있겠지만 일단 기본적인 방법을 사용할 수 있게 된 다음에 하는 것이 사상누각이 되지 않는다고 생각합니다. 고로 우선 Java로 개발하는 것을 먼저 하는게 좋다고 생각합니다.

 

 국가  :  언어          운영체제              :     프로그래밍 언어

============        ==============================

 미국  :  영어         애플  ios                       Object-C 

 한국  :  한글         구글 안드로이드               Java

 중국  :  한자         MS 윈도우                      C#  

 

 안드로이드는 거의 매년 업그레이드를 하고 있어서 어플 개발 공부를 시작할 때의 버전이 끝마칠 때 쯤 바뀌는 경우가 있습니다. 뭐. 약간의 추가사항만 바뀌면 상관없는데 초기 프로젝트 생성과정의 모습이 달라져서 학습자로 하여금 당황스러운 상황을 만나게 합니다. 그렇다고 프로그램을 작성하는 코드의 내용이 바뀌는 것은 거의 없으니 버전에 대한 염려는 크게 하지 않으셔도 됩니다. 제가 이 이야기를 하는 이유는 본 강좌의 안드로이드 버전을 현재 가장 최신인 4.1 젤리빈을 사용하겠다고 말씀드릴려는 것인데 사실 처음 강좌를 시작하려고 마음 먹을 당시만 해도 4.0 아이스크림 버전을 사용하려 했었거든요. 그 짧은 사이 새로운 버전이 나와서 이런 식이라면 강좌를 진행하다가 새로운 버전이 또다시 나오는 상황이 발생할 것 같아서 인데요. 만약 새로운 버전이 나오더라도 가급적 현재 젤리빈을 그대로 사용하려 합니다. 원래 저는 아이스크림 버전이 더 익숙한 사람입니다. 저도 젤리빈은 요사이 조금 만져보는 정도라 다소 신경 쓰이지만 뭐.. 코드설명 위주의 강좌를 진행 할 예정이니 크게 문제될 것 같지는 않습니다. 여러분들도 새로운 버전이 나오네 마네.. 그에 따라 지금 배우는게 영향을 받지 않나 하는 걱정을 하지 말라는 취지에서 말씀드립니다.

 

 참고로 안드로이드 버전은 아래와 같이 발전하였습니다. 누구의 아이디어 인지는 모르겠지만 버전 이름은 디저트 이름에서 따왔습니다. -_-

 

Apple pie..1.0 ver.(2008.09.23) 애플파이
Bananabread..1.1 ver.(2008.09.23) 바나나브레드


Cupcake..1.5 ver.(2009.04.30) 컵케이크 / 안드로이드 최초정식 버전 / 한글지원


Donut..1.6ver.(2009.09.15) 도넛 / 카메라 및 캠코더 등의 인터페이스탑재.



Eclair..2.0ver./2.1ver.(2009.10.26/2010.01.12) 이클레어 / 멀티터치, 블루투스2.1지원 /


Froyo..2.2ver.(2010.05.20) 프로요 / 최적화와 배터리타임등 대부분의 성능개선


Gingerbread..2.3ver.(2010.12.06)진저브레드 / 인터넷 접속을 통한 os업데이트


Honeycomb..3.0ver./ 3.1ver.(11.02.03/2011.05.10) 허니콤 / 홀로그래픽UI / usb기기지원


Icecream sandwitch..4.0ver.(2011.05.10) 아이스크림샌드위치 / 태블릿pc와 스마트폰 공용os


Jellybean..4.1ver.(2012.06.28)
Key lime pie OS 코드명은 K로 시작되는 키 라임 파이(Key lime pie)

2012년 06월 28일, 구글은 미국 샌프란시스코에서 열리는 개발자 회의 '2012 구글(Google) IO'를 통해 안드로이드 4.1 젤리빈과 그 레퍼런스, 넥서스7을 공식 발표했다.

[출처] 궁금한 안드로이드 버전 이름들|작성자 엔돌핀 

 

  안드로이드 버전에 대한 정보는 워낙 인터넷이 많이 있으니 검색해 보시기 바랍니다.

안드로이드 어플 개발자는 본인의 어플을 만들 때 버전에 대한 생각을 분명히 하셔야 합니다. 아직 설명을 드리지 않았지만 여러분들이 어플을 만들 때 어떤 버전으로 만들지를 결정하도록 되어 있습니다. 추가로 최소 어떤 버전 이상부터 본인의 어플이 실행될 수 있다는 것도 명시하도록 되어 있습니다. 여러분들이 아무리 멋진 어플을 개발하였다 하더라도 그 걸 다운받아 실행하는 스마트폰의 버전이 맞지 않으면 그 어플은 성공할 수 없겠죠. 현재 국내 스마트폰의 버전별 분포도는 안드로이드 디벨로퍼 사이트 에서 확인할 수 있습니다. 가급적 많은 유저가 사용할 수 있도록 최소 버전을 잘 선택하셔야 합니다.

 

 

 

2012.09.27 현재 아직도 진저브레드가 가장 많네요.

안드로이드 개발자 사이트 : http://developer.android.com

위사이트에서 About Android -> DashBoards 메뉴에서 확인할 수 있습니다.

사이트의 메뉴가 바뀌더라도 위 메뉴를 찾아보시면 확인할 수 있습니다.

 

 

 

 안드로이드의 프로그래밍 개발 영역은 크게 3가지로 구분할 수 있는데요.

 

1. 안드로이드 앱 개발 (Android App)

 - 앱(App)는 어플리케이션의 줄임말로서 특정한 목적을 수행하기 위해 개발된 소프트웨어라고 보시면 됩니다. 즉, 안드로이드라는 운영체제상에서 실행되는 각종 편의/ 생산 프로그램들을 말하는 것이지요. 여러분들이 흔히 프로그램을 깐다/ 설치한다. 라는 표현을 하는 프로그램들을 모두 어플리케이션이라고 합니다.  앱이나 어플이나 같은 말이지요.

   ex) 지하철 노선도 보기, 가계부 어플, 일정관리 어플 등등..

 

2. 안드로이드 웹 개발(Web)

 - 웹(Web)은 모두 아시다 시피 인터넷과 연관된 프로그램 이라고 생각하시면 됩니다. 무슨 말이냐면, 여러분들이 지금 사용하시는 컴퓨터에서 네이버 홈페이지를 열어보시면 보이는 구조가 있을 겁니다. 뭐. 검색창보이고 메인광고 보이고 기사들 보이고 그 밑으로 쭉~ 이런저런 내용들.. 그런데 이 화면을 여러분의 조그만 스마트 폰 화면으로 본다고 생각해 보세요. 우리가 쓰는 모니터는 대부분 17인치 이상이실텐테 이 화면을 4인치짜리로 본다면.. 눈이 아플정도로 작은 글씨와 이미지로 보이겠죠. 이러면 누가 스마트폰으로 인터넷을 하겠습니까. 그래서 이렇게 작은 스마트폰의 환경에 적합한 구성으로 화면을 구성(UI/UX라고 합니다.)시켜서 웹 사이트를 만드는 것을 안드로이드 웹 개발이라고 합니다. 다들 아시겠지만 스마트 폰에서 네이버 접속하면 화면구성이 다르죠? 그렇게 만드는 것을 말합니다.

  ex) PC환경의 네이버 : www.naver.com         Mobile환경에서의 네이버 : m.naver.com 

 

3. 안드로이드 게임 개발( 사실 앱 개발의 범주에 들어갑니다.^ ^;)

 - 이건 제가 임의로 구분한건데요. 사실 게임 개발은 어차피 앱 개발에 포함되는 용어입니다. 단지 제가 강좌로 소개하려는 내용이 일반 어플은 제외하고 게임 개발만을 목적으로 할 것이기 때문에 억지로 나눈겁니다.(-_-). 일반 어플 개발과 다소 차이가 있다면 일반적으로 간단한 앱 개발은 안드로이드에서 기본적으로 제공하고 있는 위젯(Widget 강좌에서 설명)을 많이 사용하지만 게임 개발은 위젯을 잘 사용하지 않는 다는 겁니다. 프로그램 코드상으로 거의 대부분의 작업을 한다는 것이 일반 앱 개발과 차이가 있는 부분이지요. 그래서 제 강좌는 다른 안드로이드 강좌와 다르게 위젯은 별로 설명하지 않고 코드의 설명을 위주로 이어나갈 예정입니다. 위젯에 대한 학습은 다른 강좌를 참고하시기 바랍니다.

   ex) 앵그리 버드, 룰더 스카이 등등....

 

위 게임정도는 아니지만 그래도 열심히 만들어서 마켓에 괜찮은 게임 하나 올려보자는 목표를 가지고 열심히 합시다.

혹시 아나요. 앵그리 버드 처럼 대박 게임 하나 만들 수 있을지....^ ^

 게임은 화려한 프로그래밍 기법으로 성공하는 것이 아니라고 봅니다. 아주 단순한 게임이라도 중독성 강한 게임은 얼마든지 성공할 수 있다고 봅니다. 웬만한 캐주얼 게임은 그렇게 화려한 기법을 사용하지 않으니 여러분도 미리 할 수 있다 없다 고민하지 말고 도전하시기 바랍니다.



반응형
반응형

- 이 포스트는 제 네이버블로그에 있던 내용을 재 포스트한 것입니다.

- 추후 여유가 있을 때 수정할 부분들은 수정할 예정입니다.


 본 강좌는 간단한 게임 어플 예제를 학습하여 안드로이드 어플을 제작할 수 있도록 도움이 되고자 시작하게 되었습니다. 

좀 거창하게 "안드로이드 게임 어플 제작" 이라고 했지만 전문게임제작회사에서 개발하고 있는 화려한 그래픽의 게임은 아니고 단순하고 아기자기한 캐릭터를 이용한 캐주얼 게임을 제작하고자 합니다.

 

 스마트폰의 성공적인 보급으로 인해 모바일 어플개발의 전망은 상당히 좋아졌죠. 물론 상당한 인력들이 양성되면서 현재 어플 개발 회사에 취업할 수 있는 경쟁력은 초기보다 약해졌지만 여전히 상당 수의 업체에서 모바일 어플 시장으로 영역을 확대하고 있고 결정적으로 1인 창조기업이 가능해 졌다는 것이 가장 큰 매력이라고 생각합니다. 분명 프로그래밍 분야에서 가장 효용성이 좋은 skill은 어플 개발 능력이라고 보여집니다.

 

 현재 국내에 보급된 스마트 폰의 운용체제는 크게 3가지로 구분되어 있습니다. 국내에서 삼성, LG등 가장 많은 기종이 선택한 구글의 안드로이드, 세계적으로 선풍적인 인기를 달리고 있는 애플 아이폰의 ios,  MS사의 자존심 회복을 노리는 윈도우7, 그 밖에 여러종류의 운영체제가 있지만 국내에서는 별다른 재미를 보지 못하고 있죠.

 

1. 구글 안드로이드 운영체제


 

 

운영체제 개발사 : 구글
스마트폰 제조사 : 삼성전자, LG전자, 모토롤라, 구글, HTC 등

적용 사례 :  갤럭시(삼성), 옵티머스(LG), 모토로이(모토롤라), 디자이어(HTC) 등

 

2. 애플 iOS 운영체제 


 

 

운영체제 개발사 : 애플
스마트폰 제조사 : 애플

적용 사례 : 애플 아이팟, 아이폰3Gs, 아이폰4

3. 윈도우폰 운영체제

 


 

 

운영체제 개발사 : 마이크로소프트

스마트폰 제조사 : 삼성전자, LG전자, HTC 등 
적용사례 : 옴니아7 시리즈(삼성), 옵티머스7(LG), HD7(HTC) 등

[네이버 캐스트 인용]

 

 각각의 운영체제마다 개발 언어를 달리 두고 있습니다. 안드로이드는 자바, 아이폰은 Object-C, 윈도우폰은 C#.

개발자로서는 참 짜증나는 일이 아닐 수 없죠. 그 중 아이폰 개발을 위해서는 맥킨토시 PC가 필요하죠. -_-;

아마 이 글을 읽고 있는 대부분의 여러분들도 저처럼 윈도우 PC를 쓰고 계시겠죠. 그렇다고 비싼돈을 들여 맥 PC를 살수도 없고요...

 

뭐. 이런저런 핑계에서 비롯되었지만 현 상황에서 우리가 접급할 수 있는 가장 손쉬운 운영체제는 안드로이드 겠죠. 다행이 안드로이드 쪽의 어플 개발이 국내에서 가장 많은 비중을 차지하고 나중에 개발한 어플을 마켓에 등록할 때도 아이폰보다 저렴한 돈으로 할 수 있으니 어쩔 수 없는 다소 "강요에 의한 최선의 선택(?)"으로 안드로이드 어플 개발자가 되어 보겠습니다.

 

 본 강좌는 안드로이드 어플개발업체로 취업하고자 하는 목표를 가진 분에게도 도움이 되고 개인이 1인 또는 소규모의 개발 회사를 창업해서 어플 개발자가 되기위한 분에게도 도움이 되고자 합니다. 물론 거창하게 개발회사 창업이라고 했지만 안정적으로 다니는 회사를 박차고 나와서 사업을 하거나 취업도 하지않고 방구석에서 컴퓨터만 붙잡고 있을 수 있는 분이 얼마나 있겠습니다. 본 강좌를 쓰고있는 본인 또한 현재 프로그래밍 교육기관에서 강의를 하는 한 사람의 직장인입니다. 다행히 프로그램 개발이라는 것이 단순히 PC하나만 있으면 별도의 공간없이도 충분히 가능하기 때문에 직장생활을 하면서도 도전할 수 있다는 것이죠.

 

 본 강좌는 프로그램을 처음 다루어 보시는 분에 맞추어져 있지는 않습니다. 자바를 잘은 못하더라도 한번 학습한 적인 있거나 자바가 아니더라도 C계열의 언어를 한번이라도 학습한 적인 있으신 분에 맞추어져 있습니다. 즉, 자바의 기본 문법에 대해 세세하게 설명하면서 강좌를 진행하지는 못할 것 같다는 것입니다. 안드로이드 어플 개발을 위해서 자바 능력은 어쩔 수 없는 필수 조건입니다. 그렇다고 완전히 자바의 모든 문법을 사용할 수 있어야 한다는 것이 아닙니다. 제가 학생들을 가르치면서 다소 안타까운 것이 프로그램 언어를 열심히 배우고 나서 본인이 실력이 매우 형편없다고 느끼는 학생을 보는 겁니다. 물론 몇개월 배웠다고 자바를 실무경력자들 만큼 잘하기는 어렵죠. 하지만 그들도 처음부터 잘하지는 못했고 회사에 입사할 때 화려한 기술을 가지고 입사하지 않았다는 겁니다. 자바의 문법을 열심히 배웠다고 실무 바로 적용할수 있는 센스를 가진 사람은 거의 없다고 보여집니다. 

 

 쉽게 말해 덧셈을 열심히 배워서 더하기를 할 수 있게 되었고, 구구단을 열심히 배워서 구구단을 익힌 사람에게 갑자기 100자리의 곱셈을 하라고 하면 덧셈도 알고 구구단도 알고있지만 정작 둘을 이용해서 곱셈을 하지 못하는 원리와 같습니다. 하지만 이런 사람에게 곱셈의 원리를 알려주고 연습하면 수월하게 100자리의 곱셈을 하고 나아가 알려주지 않아도 10000자리의 곱셈도 할 수 있게됩니다. 이 과정에서 구구단이나 덧셈을 완전히 못해도 상관없습니다. 곱셈의 원리를 배우면서 구구단이 잘 기억나지 않으면 그 때 다시 보면 됩니다. 구구단을 완전히 외울때까지  곱셈 공부를 시작하지 않으면 점점 시간은 길어지고 정작 하고자 하는 곱셈은 시작도 하기전에 포기하게 됩니다.

 

 프로그램도 마찬가지 입니다. 처음 문법을 익히고 나면 이 많은( 전 별로 없다고 생각하는?) 문법들을 어떻게 써먹어야 하는지 막막합니다. 사실 내가 얼마나 익히고 있는지도 반신반의죠..

 

 저도 안드로이드를 처음 시작할 때 자바의 모든 문법을 잘 쓰지는 않았던것 같습니다. 그런데 안드로이드 어플 개발을 하다보니 자주 쓰는 자바의 문법이 있고 오히려 자바를 학습할 때 그렇게 이해되지 않던 영역이 번쩍! 하면서 이해됐던 경험도 있습니다.

 

 자!! 좀 장황하게 설명드렸는데 결론은 프로그래밍 언어(가급적 Java)를 학습한 적인 있다면 우선 안드로이드를 시작하면서 필요한 자바 문법이 있다면 그 때 그때 찾아가면서 학습에 도전하시기 바랍니다. 최대한 저는 여러분들이 매우 미약하게 프로그래밍 능력이 있다는 전제 하에서 강좌를 이어 가보도록 하겠습니다. 여기서 미약하게는 적어도 기본 제어문이나 연산자는 별도의 설명없이도 이해 할 수 있어야 한다는 것입니다. 사실 얼마나 잘 할 수 있을지는 자신없네요.(-_-);

 

참고 : 저도 회사원이다 보니 다음 강좌를 언제 쓸 수 있다고 자신할 수 없다는 점 이해 바랍니다.

 

※ 제 강좌의 주요 예제는 "안드로이드 사이드"의 [게임개발]을 참고하였습니다.  http://www.androidside.com

반응형

+ Recent posts