Android APP 만들기

개발환경

안드로이드 앱은 안드로이드 스튜디오라는 프로그램에서 java와 안드로이드 관련 sdk를 활용하여 제작합니다.

  • Mac OSX 10.9.2(메버릭스)
  • Android Studio 버전 0.5.5
  • 갤럭시 S2 OS버전 4.1.2(젤리빈)
  • Android SDK 버전 22.6.2
  • Android API 7~19
  • Google Cloud Message

안드로이드 SDK 설치사항에 좀더 참고를 할 수 있도록 아래 캡쳐이미지를 참고하시면 되곘습니다.

이런 간략한 개발환경에 설명을 넣은 이유는 개발툴 세팅부분은 지나치고 소스수정에서 시작하기 위함입니다.

푸시메세지를 위한 사전준비

푸시알림기능을 사용하기 위해서는 Google Developers Console 사이트에서 프로젝트를 만들어서 프로젝트에 Project Number와 API Key값을 얻어야 합니다.
Google Developers Console에서 프로젝트를 만들고 값을 설정하는 방법에 대해서는 아래의 과정을 참고하세요.

  1. Google Developers Console 사이트 접속

    https://console.developers.google.com/project 페이지에 접속하고 로그인을 합니다.

  2. 프로젝트 만들기

    로그인을 하면 아래와 같은 화면으로 넘어갑니다. 이미 프로젝트가 몇개 올라와있네요.

    여기서 “CREATE PROJECT”버튼을 누릅니다. New Project 창이 뜨는것을 확인할 수 있는데 Project name과 Project ID 항목을 입력하고 “Create” 버튼을 눌러서 프로젝트를 만듭니다.

    프로젝트가 만들어지기까지 잠시 시간이 걸리는데 프로젝트가 다 만들어졌으면 프로젝트명을 클릭을 해서 Overview 페이지로 이동합니다.

    여기서 중요한 부분이 있는데 Project Number의 번호를 꼭 기억해둡니다. 앱 소스를 수정할때 Common Class를 수정할때 SENDER_ID값이 되는 부분입니다.

  3. GCM API 켜기

    프로젝트 관리 화면 왼쪽메뉴에서 “APIs & auth” 메뉴를 선택합니다.
    API목록 페이지로 넘어가는데 목록에서 STATUS에서 ON으로 되어있는것들을 전부 OFF로 바꾸고, “Google Cloud Messaging for Android” 항목을 찾아서 OFF를 ON으로 바꿉니다. 이상없이 수정했으면 아래 그림과 같이 “Google Cloud Messaging for Android” 항목만 ON으로 되어있습니다.

  4. API Key 만들기

    프로젝트 관리화면의 왼쪽메뉴에서 “Credentials”메뉴를 선택합니다. Credentials 페이지에서 “CREATE NEW KEY” 버튼을 누르면 아래 그림과 같이 Create a new key 팝업 레이어가 나옵니다.

    여기에서 4개의 버튼이 나오는데 “Server key” 버튼을 누르면 Create a server key and configure allowed IPs 팝업 페이지로 이동합니다. 여기서 바로 “Create”버튼을 눌러서 API Key를 추가하면 아래 그림과 같이 Key for server applications에서의 항목이 추가되는것을 확인할 수 있습니다.

    이 부분에서 중요한 부분은 API key입니다.
    API key값을 관리자에 환경설정에 입력해줘야 서버에서 휴대폰으로 메세지를 보낼 수 있게됩니다.

  5. API Key값을 관리자에 등록하기

    [4. API Key 만들기] 코스에서 API key 값을 복사합니다. 위의 이미지에서 보이는 API key 값은 “AIzaSyApF5i5KBmH-xxxxxxxxzXxxXXXxx”형태가 됩니다.
    관리자로 가서 [앱 관리 > 고객 APP 관리 > 기본 환경설정]메뉴로 갑니다.
    기본 환경설정 페이지에서 인증키 설정 섹션의 안드로이드 인증키 항목에 아래 그림과 같이 비어있는 텍스트폼을 볼 수 있을겁니다.

    여기에 복사한 API key 값을 붙여넣기 합니다. 개발용과 배포용 두군데 다 붙여넣어줍니다.
    정확하개 값이 들어갔는지 확인하고 [저장] 버튼을 눌러서 적용합니다.

앱 소스수정

이 과정은 하이브리드 APP으로 공개된 MyApp 소스 수정과정을 소개합니다.

소스 다운로드와 Android Studio에서 열기

  1. 애니빌드에 하이브리드APP 샘플소스 요청해서 안드로이드용 소스를 다운 받습니다.
    다운로드가 완료되면 압축풀고 적당한 위치로 폴더를 옮겨둡니다.
  2. 안드로이드 스튜디오 프로그램을 열어서 다운로드 받은 프로젝트를 엽니다.
  3. 소스가 열렸으면 소스에서 열려진 SDK들을 인덱싱작업을 하기 때문에 잠시 기다립니다.
    컴퓨터 성능이나 설정에 따라서 길어질수도 있고 짧아질수도 있습니다. 프로그램 가장 아래에 아래 그림과 같이 메세지가 떠있으면 아직 초기화작업중이므로 없어질때까지 계속 기다리면 됩니다.

    안드로이드 스튜디오의 구성은 이클립스와 굉장히 유사하지만 안드로이드 앱 개발에 집중되어 있기 때문에 자세히 뜯어보면 다른 모습들을 볼 수 있습니다. 인터페이스가 이클립스와 유사하기 때문에 안드로이드 스튜디오 인터페이스 설명은 생략하겠습니다.
  4. 소스를 열었으면 소스에서 오류가 있는지 확인해봅니다.
    만약 코드에 오류가 발생하면 개발환경이 틀려서 sdk버전이 필요한 sdk가 설치되어있지 않은경우가 대부분입니다.
    오류가 난다면 아래 그림과같이 소스 오른쪽 줄에 빨간색 작은 박스를 확인할 수 있습니다.

    그리고 아래 그림과 같이 오류난 소스부분이나 왼쪽 프로젝트 파일 이름에서 빨간색 물결선을 확인할 수 있습니다.


    myapp의 주요파일은 프로젝트 매니저에서
    [MyApp > app > src > main > java > com.myapp.app]에 위치한 5개의 클래스 파일
    [MyApp > app > src > main]에 위치한 AndroidManifest.xml파일
    [MyApp > app > src > main > res]쪽에 있는 이미지와 텍스트값 xml파일들
    정도 됩니다. 이 파일들에서 오류가 없는지 확인합니다.

App ID 수정

소스 클래스나 AndroidManifest.xml 파일에서 “com.myapp.app”라는 문구를 많이 볼 수 있습니다.
이것은 App ID라고 하는 App의 고유이름입니다. 홈페이지에서는 도메인 주소로 볼 수 있는 값입니다. 그래서 각각 앱마다 값이 중복되면 안되기 때문에 꼭 바꿔줘야 합니다.

  1. 프로젝트 영역에서 [프로젝트 > app > src > main > java > com.myapp.app]을 선택하고 마우스 우측키를 누르면 팝업 메뉴에서 [Refactor > Rename]메뉴를 선택합니다.
  2. 아래 그림과 같이 경고 메세지가 나옵니다. 여러군데에서 이름이 바뀌기 때문에 어떤곳에서 수정되는지 알려줍니다.

    [Rename Package] 버튼을 누릅니다.
  3. 이번에는 이름을 바꾸는 Rename 윈도우가 나옵니다.

    “com.myapp.app” 값에서 변경되는 값은 맨뒤에 app 이라는 단어이므로 필자가 변경하려는 “coco”로 고치면 “com.myapp.coco”로 변하게 됩니다.
    이 값은 다른 앱이랑 중복되는 값을 넣지 않도록 합니다. (계정 아이디값 권장)

    변경을 끝냈으면 [Refactor] 버튼을 누릅니다.
  4. 클래스 파일을 열어보면 com.myapp.coco로 바뀐것을 확인할 수 있습니다. 하지만 아직 바뀌지 않은 부분이 있습니다.
    먼저 [프로젝트 > app > src > main > AndroidManifest.xml]파일을 엽니다.
    매니페스트 파일 소스를 보면 고쳐진 부분도 있고 고쳐지지 않은 부분이 있습니다. [Ctrl(Cmd) + R] 단축키를 눌러 찾을값을 “myapp.app”로 적고, 바꿀값을 “myapp.coco”로 적고 [Replace all] 버튼을 누르면 값이 전부 바뀝니다.
  5. 이번에는 [프로젝트 > app > src > main > java > com.myapp.coco Common]항목을 더블클릭하여 Common 클래스를 엽니다.
    이 클래스에서 ID_PushMessage값과 ID_DeviceRegistered값에도 “com.myapp.app”이라고 되어있으니 수정합니다.

Common Class 수정

Common 클래스는 앱에서 열리는 사이트 주소, 푸시 메세지 Project Number, 개발자 모드값을 수정하는 환경설정 클래스 입니다.

  1. [MyApp > app > src > main > java > com.myapp.coco > Common]항목을 더블클릭하여 Common 클래스를 열면 에디터에서 Common Class 소스가 나옵니다.
  2. 각자 변수들에 대한 설명은 주석을 참소하고 아래 변수들은 꼭 수정해야할 변수들입니다.
    • BASE_URL : 중요합니다! 홈페이지 주소를 입력합니다.(반드시 솔루션을 이용한 홈페이지 주소를 입력합니다.)
    • SENDER_ID : “푸시 메세지를 위한 사전준비” 섹션에서 프로젝트를 만들면 나오는 Project Number 번호를 입력합니다.
    • DEV : 개발자용 변수입니다. 배포전에 테스트로 이용하려면 값을 true로 바꾸고, 개발끝나고 배포하려면 false값으로 수정합니다.

리소스 수정

리소스 영역은 앱 아이콘 이미지 런처 이미지, 앱 제목이나 텍스트, 레이아웃같은 내용들이 포함되어있습니다.

  1. [MyApp > app > src > main > res]항목을 엽니다.
  2. 앱 이미지들은 drawable-xxxx 모듈에 들어있습니다. 아이콘은 ic-launcher.png파일이고, 런처 이미지는 splash.png파일입니다.
    모듈이름에서 hdpi나 mdpi들로 구분되어 같은파일이 들어있는것을 볼 수 있는데 모바일 스크린 사이즈나 해상도에 따른 이름으로 구분짓습니다. 고해상도 휴대폰일수록 큰 이미지를 요구합니다.
    자세한 데이터는 http://www.emirweb.com/ScreenDeviceStatistics.php 페이지에서 확인하세요.
    넣어야 할 이미지의 정확한 크기는 소스의 이미지를 이미지 편집툴로 열어보거나 구글링해보시길 바랍니다.

    이미지는 드래그로 모듈에다 집어넣으면 들어가기 때문에 사이즈와 파일이름을 맞춰주면 문제없습니다.
  3. 텍스트 메세지가 들어있는 파일은 values 모듈속에 strings.xml파일을 열어보면 확인할 수 있습니다. 이 파일이 중요한 이유는 app_name값이 앱 이름이 됩니다. 앱 아이콘 아래에 앱 이름이 app_name값입니다.

앱 관리 다자인 소스작업

앱 메뉴화면이나 Push 알림내역의 소스를 관리자에서 바꿀 수 있습니다. 기본은 소스가 아무것도 없기 때문에 직접 소스를 넣어줘야합니다.

  1. 관리자에서 [앱 관리 > 고객 APP 관리 > 기본 환경설정] 메뉴를 선택하여 환경설정 페이지로 이동합니다.
  2. 디자인 관리 섹션에서 “서브 메뉴” 탭을 선택합니다.
  3. 아래 소스입력폼이 비어있는걸 볼 수 있습니다. 셀렉트목록을 클릭하여 “[phpx] 기본소스”를 선택하고 “선택하기”[샘플디자인 소스 가져오기] 버튼을 누르면 아래 그림과 같이 소스폼에 소스가 들어가는것을 볼 수 있습니다.
  4. 이전과 같은 방법으로 “Push 알림 내역“ 탭과 “Push 알림내역 (DATA)” 탭의 소스를 넣어주고 [수정(모두저장)] 버튼을 눌러 설정을 적용합니다.
  5. 앱을 실행하여 메뉴버튼을 눌러서 확인해봅니다.
    소스가 정상적으로 들어갔다면 아래 그림과 같이 메뉴가 나오고, “알림내역” 메뉴를 선택하면 “이벤트 알림 새소식”이라는 페이지가 출력될 것입니다.

디바이스 테스트

필요한 값들을 수정했으면 중요한 테스트를 거쳐야합니다. 컴파일 오류가 났을수도 있고, 값이 잘못들어갔을수도 있고, 푸시 메세지가 날라가지 않을수도 있고, 이미지가 잘못 들어갔는지 확인을 하기 위해서 반드시 테스트를 거쳐야 합니다.
필자가 경험하거나 검색을 해봐도 AVD로 테스트하는것은 절대로 추천할수가 없으며 실제 기기로 테스트해보는것을 추천 드립니다.

  1. 테스트 준비
    디바이스로 테스트하려면 먼저 디바이스에서 [환경설정 > 개발자 옵션 > USB 디버깅]항목을 체크합니다.


    그리고 컴퓨터와 휴대폰을 usb케이블로 연결합니다. 윈도우라면 환경에 따라 휴대폰 드라이버를 설치해야할수도 있으니 따로 검색해보시길 바랍니다.
    만약 문제가 없으면 아래 그림과같이 Android DDMS 패널의 디바이스 목록에 휴대폰 모델명이 추가되었음을 확인 할 수 있습니다.
  2. 테스트 컴파일
    디바이스 테스트 준비가 됐으면 Ctrl + R 단축키를 누르던지 [Run > Run ‘app’]메뉴를 선택해서 컴파일을 시작합니다.
    컴파일 시작하다가 잠시 기다리면 디바이스 연결하고 처음 컴파일하면 아래 그림과 같이 디바이스 선택하는 창이 나옵니다.
    테스트할 디바이스를 선택하고 OK버튼을 누릅니다.

    앱이 컴파일하고 파일이 휴대폰으로 정상적으로 들어간다면 휴대폰에 앱이 실행되고 홈페이지 주소 입력했던 화면으로 나옵니다.
    만약 휴대폰 부분에서 오류가 나면 Logcat 부분에서 빨간 글씨나 다른 메세지로 오류사항이 표시됩니다.
  3. 앱 메뉴확인
    앱 관리자에서 서브메뉴 소스를 넣었으면 휴대폰 메뉴버튼을 누르면 아래 사진과 같이 메뉴가 나옵니다.(샘플 디자인에서 [phpx] 기본디자인)
  4. 관리자 앱 설치확인
    관리자 [앱 관리 > 고객 APP 관리 > APP 설치현황] 페이지에서 설치목록에 나왔는지 확인합니다. 만약 목록에 안나오면 Common클래스에서 BASE_URL값을 잘못적었거나 SENDER_ID값에 문제가 일어난 것일겁니다.

    SENDER_ID값에 문제가 있으면 logcat에 아래와 같은 메세지가 나오는것을 확인할 수 있습니다.
    04-23 14:15:16.591 32356-32689/com.myapp.app D/DEBUG? onError. errorId : INVALID_SENDER
    이에대한 문제는 [푸시 메세지를 위한 사전준비] 섹션에서 다시 확인해보세요.

    그리고 BASE_URL값도 확인해봐야 할 사항입니다.
  5. 푸시알림
    마지막으로 푸시 알림메세지가 정상적으로 받아지는지 확인합니다.
    먼저 메세지를 보내기 위하여 관리자에서 [APP 설치현황]페이지로 이동합니다. 정상적으로 기기등록이 되어있다면 아래 그림과같이 목록에 추가되어있는걸 확인할 수 있습니다.


    목록에서 녹색버튼인 [메세지 전송] 버튼을 누르면 팝업창이 열립니다.
    메세지 전송 팝업창에서 유형을 메세지 전송을 선택하고 Push 메세지 항목에 입력하고 전송 버튼을 누를때 문제가 없다면 메세지가 오는것을 확인할 수 있습니다.

    만약 메세지가 오지않는다면 예상되는 원인은 대략적으로 다음과 같습니다.
    • Google Developers Console에서 프로젝트가 만들어지지 않을경우
    • Google Developers Console 프로젝트에서 “Google Cloud Messaging for Android” API가 켜져있지 않을경우
    • Project Number와 API key값이 잘못 입력된 경우
    그 외에 소스에서 Manifest파일이나 푸시 관련된 소스코드를 수정을 해서 문제가 생겼을 가능성이 있습니다.

    안드로이드는 굉장히 많은 디바이스와 버전이 존재하기 때문에 테스트에 굉장히 많이 신경써야합니다. 제공되어있는 myApp 소스도 완벽하지 않기 때문에 문제가 발생할 수 있기 때문에 많은 삽질이 필요한 과정입니다.

    앱이 이상이 없으면 다음스텝으로 apk 파일 만들기 스텝으로 넘어갑니다.

배포할 apk파일 만들기

안드로이드 앱파일인 apk파일을 컴파일하여 만드는 법에 대해서 알아보겠습니다.

먼저 [Build > Generate Signed APK…]메뉴를 선택합니다. 그럼 Generate Signed APK Wizard 이름의 팝업창이 뜹니다. 모듈 선택에서 app으로 되어있는지 확인하고 Next 버튼을 누르면 아래 그림과같이 입력폼이 많은 페이지가 나옵니다. 이 페이지는 앱 서명에 관한 정보를 입력하고 관리하하는 부분입니다.


작업하는 프로젝트에서 한번도 이 화면을 거치지 않으면 키가 만들어져있지 않기 때문에 모든항목이 비어있습니다. 그래서 새로운 키를 만들어야 합니다. [Create new…] 버튼을 누릅니다. 그럼 아래 그림과 같이 “New Key Store”창이 뜹니다.

  • Key store path : key가 저장되는 장소를 정합니다. 오른쪽 “…” 버튼을 누르고 위치를 정합니다.
  • Password : 자신만의 비밀번호를 입력합니다.
  • Alias : 구분짓는 이름을 입력합니다.
  • First and Last Name : 인증서를 만드는데 이름을 입력합니다.


OK버튼을 눌러도 좋을 정도라면 위 이미지와 같은정도로 입력하면 됩니다. iOS와 다르게 안드로이드는 인증서에 관해서 그다지 신경쓰지도 않아도 된다는 인상입니다.
OK를 누르면 New Key Store 창이 닫히고 Generate Signed APK Wizard 창을 확인할 수 있는데 key에 관한 정보들이 입력되어 있는것을 확인할 수 있습니다.

여기서 Next버튼을 누르면 Master Password 창으로 비밀번호를 입력해라고 합니다. 이전에서 New Key Store에서 입력했던 비밀번호를 입력하고 OK버튼을 누릅니다.
이제 마지막 단계인데 Destination APK path 항목에서 apk 파일이 저장되는 경로를 지정하고 Finish 버튼을 누르면 apk파일을 제작합니다.

잠시 기다리면 apk파일을 만들었다고 아래 그림과 같이 알림창이 나옵니다.


파일이 저장된 위치로 이동하려면 Reveal in Finder버튼(윈도우는 다른 이름의 버튼일수도 있습니다.)을 누르면 파일이 저장된 위치로 탐색기나 파인더가 열립니다.

이것으로 안드로이드 앱 파일을 만들었습니다.
만약 소스에 문제가 있다면 컴파일을 하다가 오류나면서 오류메세지가 뜰것입니다.

APK 파일을 관리자 APP관리에 업로드하기

이제 앱 배포를 위하여 관리자에 apk파일을 올려야합니다.
관리자에서 [앱 관리 > 고객 APP관리 > 기본 환경설정]페이지로 이동하면 환경설정 페이지가 나오는데 배포용 패키지 등록 섹션에서 안드로이드 패키지 파일 등록항목에서 [9.배포할 apk파일 만들기] 과정에서 만들었던 apk파일을 첨부합니다.

환경설정 페이지에서 기타설정 섹션에서 앱설치 배너를 삽입한다고 옵션을 바꿔줍니다. 필자는 “스마트폰으로 접속시 모바일웹 상단에 [앱설치 배너]를 삽입 합니다.”로 선택했습니다. 그리고 그 아래 디자인 관리 섹션에서 앱설치 배너의 소스를 넣습니다. 필자는 “[phpx] 기본(배너형)” 소스를 넣었습니다.

이 모든과정을 마쳤으면 [수정(모두저장)] 버튼을 누릅니다.

앱 설치하기

작업하는 홈페이지에 모바일로 접속을 합니다. 이전단계에서 앱설치 배너 설정을 했으면 아래 그림과 같이 상단에 배너가 나오는것을 확인할 수 있습니다.


[앱 다운로드하기] 버튼을 누르면 파일을 다운로드를 하는데 다운로드가 끝나면 받은 파일을 실행합니다.
만약 보안상의 이유로 설치가 차단되었다는 메세지가 나오면 [설정] 버튼을 눌러서 [디바이스 관리 > 알 수 없는 출처]항목에서 체크를 하고 다시 설치를 합니다.

정상적으로 설치가 되었으면 설치되었다는 메세지가 나오면서 [열기]버튼을 누르면 앱이 실행되는것을 확인할 수 있습니다.

앱 설치과정까지 끝났으면 안드로이드 앱 만들기 과정이 모두 끝났습니다.
작업 과정중에 오류가 발생하고 설명대로 진행이 안되는 경우도 많을것입니다. 문제가 생기면 구글에서 검색을 하면서 스스로 해결할 수 있는 능력이 많이 필요합니다.

정말 어려운 과정이지만 화이팅하시길 바랍니다.

top