1. 안드로이드 스튜디오 설치하기
안드로이드 스튜디오는 안드로이드 전용 앱을 개발하는 도구로 구글이 2013년에 처음 발표했습니다. 안드로이드 개발자 사이트에 접속한 후 안드로이드 스튜디오를 내려받아 설치하면 안드로이드 앱을 개발할 기본 준비는 끝납니다.
https://developer.android.com/?hl=ko
Android 모바일 앱 개발자 도구 - Android 개발자 | Android Developers
Discover the latest app development tools, platform updates, training, and documentation for developers across every Android device.
developer.android.com
기본적으로 Next, Install 버튼을 누르면서 설치를 해줍니다. 저는 안드로이드 스튜디오를 컴퓨터에 처음 설치하기 때문에 설치 유형을 [Standard] 로 선택해주겠습니다. 설치를 모두 마치면 <Finish>를 클릭해서 설정 마법사를 완료합니다.
2. 첫 번째 앱 만들기
안드로이드 앱을 개발하려면 먼저 프로젝트부터 만들어야 합니다.
프로젝트 생성
[Create New Project] 를 선택해 새로운 프로젝트를 만듭니다. 프로젝트 생성 첫 번째 단계에서는 앱이 실행될 플랫폼과 템플릿을 선택하게 됩니다. 안드로이드 앱은 스마트폰 뿐만 아니라 웨어러블, TV, 자동차 등 여러 플랫폼에서 실행되지만, 여기서는 스마트폰에서 실행되는 앱을 만듭니다. 따라서 [Phone and Tablet]을 선택하고 템플릿 목록에서 빈 화면을 기본으로 제공하는 [Empty Activity]를 선택합니다.
그 다음으로 프로젝트 정보를 입력하는 화면이 나타납니다.
- Name
- 프로젝트 명
- Package Name
- 패키지명, 프로젝트 식별값
- 안드로이드 앱은 개발자가 작성한 패키지명으로 식별됩니다. 패키지명이 같은 앱은 스토어에 등록할 수 없을 뿐 아니라 기기에 설치할 수도 없으므로 고유한 이름으로 지어야 합니다. 보통 도메인을 역순으로 입력하고 끝에 프로젝트 명을 붙이는 형태로 작성합니다.
- Save Location
- 프로젝트 저장 위치
- 프로젝트의 파일들이 저장되는 루트 디렉터리입니다. 앱을 개발하면서 추가하는 소스나 이미지 등이 이 디렉터리에 저장됩니다.
- Language
- 프로젝트 개발 언어
- 안드로이드 앱을 어떤 언어로 개발할 것인지를 나타냅니다. 안드로이드 스튜디오는 개발 언어로 Kotlin과 Java 2가지를 지원하는데 기본값은 Kotlin입니다. Kotlin으로 지정했어도 Java 파일을 언제든지 추가할 수 있습니다.
- Minimum SDK
- 앱이 설치되는 최소 SDK 버전입니다.
- 이 프로젝트로 개발한 앱은 여기서 설정한 버전 이상의 폰에만 설치됩니다.
안드로이드 스튜디오를 실행하면 아래쪽에 각종 도구 창을 열 수 있는 탭이 있는데, 그중 로그캣(logcat)에는 앱이 실행 줄일 때 발생하는 로그가 출력됩니다. 앱에서 출력한 로그나 오류 메시지 등을 확인할 때 자주 보는 창이므로 기억해 두기 바랍니다.
SDK 매니저
안드로이드 스튜디오 화면의 오른쪽 위를 보면 툴바에 아이콘이 보입니다. 이 아이콘은 클릭하면 안드로이드 SDK를 관리할 수 있는 SDK 매니저가 열립니다.
첫 번째 탭인 [SDK Platforms]에서는 안드로이드 SDK 목록을 보여 줍니다. 안드로이드 스튜디오를 설치할 때 최신 버전의 SDK가 기본으로 설치되므로 목록에서 해당 버전에 체크 표시된 것을 확인할 수 있습니다.
두 번째 탭인 [SDK Tools]을 클릭하면 개발자 도구들이 표시됩니다. 기본으로 필요한 도구는 안드로이드 스튜디오를 설치할 때 포함되므로 추가로 설치할 필요는 없습니다. 그러나 각 도구를 최신 버전으로 업데이트하거나 에뮬레이터 추가 도구를 이곳에서 설치할 수 있습니다. 혹시 필수 도구가 설치되지 않았다면 아래 표를 참고해서 설치하고 될 수 있으면 최신 버전으로 유지하는 것이 좋습니다.
이름 | 용도 | 설치 여부 |
Android SDK Build-Tools 31-rc5 | 앱을 빌드하는 데 필요한 도구 | 필수 설치 |
Android Emulator | 앱을 실행하는 데 필요한 도구 | |
Android SDK Platform-Tools | 안드로이드 플랫폼과 연동되는 adb, fastboot, systrace와 같은 도구 모음 | |
Android Emulator Hypervisor Driver for AMD Processors(Installer) | AMD용 하이퍼바이저 드라이버 | AMD CPU라면 설치 |
Intel x86 Emulator Accelerator (HAXM installer) | 인텔 에뮬레이터 가속기 | AMD CPU라면 설치 |
위 3가지는 꼭 설치를 해야하는데요. 아래 2 가지는 자신의 CPU에 따라 설치하면 됩니다. 그런데 AMD의 하이퍼바이저 드라이버나 인텔의 가속기인 HAXM을 설치하려면 먼저 CPU가 가상화 기술을 지원해야 하며 이를 활성화(BIOS 설정)해야 합니다.
기타 설정
이 설정은 필수는 아니지만 앱 개발을 좀 더 편리하게 합니다.
- [Editor > General > Auto Import]
- Add unambiguous imports on the fly 체크
- Optimize imports on the fly 체크
3. 앱 실행하기
이제 앱을 실행해 테스트하는 방법을 살펴보겠습니다. 2가지 방법이 있는데 하나는 안드로이드 스튜디오가 제공하는 가상 기기를 이용하는 방법이고, 또 하나는 실제 스마트폰을 이용하는 방법입니다.
가상 기기에서 실행
안드로이드 가상 기기는 AVD(Android virtual device)라고 하며 흔히 에뮬레이터라고 부릅니다. 안드로이드 스튜디오 오른쪽 위에 스마트폰 모양 아이콘을 클릭하면 AVD 매니저가 실행됩니다. AVD 매니저에서 [Create Virtual Device]를 클릭하면 에뮬레이터 만들기를 시작합니다.
- 하드웨어 선택
- 하드웨어 선택하는 창이 나타나면 목록에서 선택하고 <Next>를 클릭합니다. 여기서는 기본으로 선택된 Pixel 2 스마트폰으로 진행하겠습니다.
- 시스템 이미지 선택
- 그다음으로 시스템 이미지를 선택하는 창이 나타납니다. AVD 설정에서 이 부분이 가장 중요한데 앞에서 선택한 하드웨어에 설치할 시스템 이미지, 즉 안드로이드 운영체제 버전을 선택해야 합니다. 여기서는 [x86 Images]를 클릭합니다.
- 여기서는 앱을 R 버전으로 실습합니다. 따라서 여기서는 아래와 같은 버전을 선택하고 <Next>를 클릭합니다. 만약 해당 버전이 설치되어 있지 않다면 이름 옆에 <Download>가 표시되므로 이를 클릭해서 설치한 후에 진행합니다.
이름 | R |
API 레벨 | 30 |
ABI | x86 |
Target | Android 11.0(Google APIs) |
이렇게 AVD를 만들면 디바이스 매니저 창에 추가됩니다. 여기서 Actions 항목에 있는 시작 버튼을 누르면 에뮬레이터가 실행됩니다.
AVD까지 준비했으므로 이제 앱을 실행해 보겠습니다. 먼저 안드로이드 스튜디오 툴바에서 실행할 앱을 선택합니다. 지금은 프로젝트에 app이라는 앱만 있으므로 이를 선택합니다. 그리고 그 오른쪽에서 앱을 실행할 기기를 선택합니다. 여기서는 연재 실행중인 AVD나 연결된 스마트폰 이름이 표시됩니다. 앞에서 만든 AVD 이름이 표시된 것을 확인하고 오른쪽에 있는 시작 버튼을 클릭하면 앱을 빌드한 후 실행합니다. 즉, app이라는 이름의 앱을 Pixel 2 API 30 기기에 설치한 후 실행합니다.
실제 스마트폰에서 실행
앱을 개발할 때는 대부분 에뮬레이터에서 테스트할 수 있지만 최종 배포하기 전에는 실제 기기에서 테스트 해봐야 합니다. 앱을 실제 스마트폰에서 실행하려면 먼저 컴퓨터와 연결해야 합니다. 윈도우에서는 USB 드라이버를 설치해줘야 합니다. 윈도우용 USB 드라이버는 스마트폰 제조사 홈페이지를 통해 내려받을 수 있습니다.
드라이버를 설치했으면 이제 스마트폰에서 USB 디버깅을 허용해줘야 합니다. 그런데 스마트폰마다 설정 메뉴가 약간 다를 수 있습니다. 이 책에서는 갤럭시 스마트폰을 기준으로 설명하겠습니다. 스마트폰에서 설정 앱을 실행하고 아래쪽으로 스크롤하여 [휴대전화 정보 > 소프트웨어 정보] 를 선택합니다. 소프르웨어 정보에서 [빌드 번호]가 보이면 손가락으로 7번 터치하세요. 그러면 토스트 메시지로 "개발자 모드를 켰습니다." 라는 메시지가 나옵니다. 메시지가 정상으로 표시되었다면 뒤로가기 버튼을 2번 눌러 처음 화면으로 돌아옵니다. 이제 [휴대전화 정보] 아래 [개발자 옵션] 이 생긴 것을 확인할 수 있습니다. 이 메뉴를 선택하고 [USB 디버깅] 항목을 찾아서 체크합니다. 그러면 허용 여부를 묻는 창이 나타나는데 여기서 <확인> 을 선택하면 스마트폰의 개발자 모드가 설정됩니다. 이제 컴퓨터와 스마트폰을 USB로 연결하면 스마트폰에 "USB 디버깅을 허용하시겠습니까?" 라는 창이 나타납니다. 여기서 <허용>을 선택합니다. 이때 <이 컴퓨터에서 항상 허용>에 체크하면 다음에 다시 연결할 때 자동으로 허용합니다.
이렇게 스마트폰을 컴퓨터에 연결하면 안드로이드 스튜디오에서 실행 대상 기기 부분에 연결한 스마트폰의 이름이 표시됩니다. 여기서 시작 버튼을 클릭하면 해당 스마트폰에 앱이 설치되어 실행됩니다.
축하합니다. 이제부터 안드로이드 앱을 개발할 수 있습니다.
4. 앱 출시하기
앱을 출시하려면 프로젝트의 여러 파일을 하나로 묶어서 배포해야 합니다. 그리고 이 배포 파일을 여러 사람이 내려받을 수 있도록 스토어에 등록해야 합니다. 먼저 앱을 출시하기 전에 알아야 할 사항을 살펴보겠습니다.
배포 파일
사용자가 자신의 안드로이드 스마트폰에 앱을 설치하려면 구글의 Play 스토어나 기타 앱 마켓에서 내려받아야 합니다. 이때 사용자는 개발자가 등록한 배포 파일을 내려받습니다. 안드로이드 앱의 배포 파일은 APK와 AAB가 있습니다. APK(Android application package)는 안드로이드의 전통적인 배포 파일로서 컴파일된 코드와 리소스를 묶어서 키로 서명한 것입니다. 그리고 AAB(Android app bundle)은 2018년 구글 IO에서 발표한 새로운 안드로이드 앱 배포 파일입니다.
ABB 파일은 Play 스토어에 올리면 사용자 기기에 맞게 최적화된 APK를 대신 만들어 줍니다. 즉, 사용자 기기에 내려받아 앱을 설치하는 파일은 똑같이 APK지만, 개발자가 직접 APK 파일을 만들지 않고 Play 스토어에서 최적화된 파일을 만들어 주는 것입니다. 이때 앱을 내려받는 기기에 맞는 파일만 포함하므로 앱의 크기가 줄어드는 효과가 있습니다. 결국 AAB 방식으로 등록된 앱을 내려받는 사용자는 APK 방식과 달리 사용자 기기에 필요한 파일만 내려 받게 됩니다.
구글에서는 2021년 8월부터 Play 스토어에 새로운 앱을 게시할 때 AAB를 사용해야 한다고 발표했으므로 여기서는 AAB 배포를 다룹니다.
앱 서명
안드로이드 배포 파일을 만들려면 키를 만들어 앱에 서명해야 합니다. 앱을 서명하는 방법은 크게 2가지로 나뉘는데 하나는 서명 키를 개발자가 직접 만들어 관리하는 방법이고, 하나는 구글 Play에서 관리하는 방법입니다.
개발자가 서명 키를 직접 관리하는 방법은 출시용으로 앱을 빌드할 떄 개발자가 만든 키로 앱을 서명하고 이를 Play 스토어에 등록하여 사용자에게 전달합니다. 즉, 개발자가 만든 서명키 1개로 앱을 관리합니다. 그런데 이렇게 하면 만에 하나 개발자가 키를 분실하거나 도용될 때 대처할 수가 없습니다. 즉, 앱을 업데이트하려면 이전 버전과 똑같은 키로 서명해야 하는데 서명할 수가 없어서 업데이트를 하지 못합니다. 만약 새로운 키를 만들어 서명하면 완전히 새로운 앱으로 등록됩니다. 이러한 문제점을 해결하고자 구글에서는 Play 앱 서명 이라는 서비스를 만들었습니다.
구글 Play 앱 서명 방식을 키를 2개로 구분합니다. 개발자가 만들고 관리하는 업로드 키(기존 서명 키)와 구글 Paly가 만드는 앱 서명 키 입니다. 개발자가 키를 만들어 앱을 서명하지만 이 키는 앱을 구글 Play에 등록할 때만 사용하는 업로드 키입니다. 구글 Play는 업로드된 앱을 다시 자체적으로 만든 키로 서명해서 사용자에게 전달합니다. 구글 Play의 앱 서명 키는 구글에서 관리하며 개발자가 직접 제어할 수 없습니다.
이처럼 키가 구분돼 있어서 만약 개발자가 키를 분실하거나 도용되더라도 앱을 서명한 키는 안전하므로 앱을 계속 업데이트할 수 있습니다. 개발자가 관리하는 업로드 키는 다시 만들어 Play 스토어에 등록하면 됩니다.
구글 Play 스토어에 게시
- AAB 배포 파일 만들기
- 고유한 패키지명으로 바꾸기
- 안드로이드 앱은 개발자가 지정한 고유한 패키지명으로 식별됩니다. 패키지명을 바꾸려면 모듈 수준의 build.gradle 파일을 수정해야합니다. 이 파일을 열어 applicationId 항목을 고유한 이름으로 수정하면 됩니다.
- build.gradle 파일 수정 후 <Sync now> 를 클릭해 빌드 구성을 동기화해야지만 수정한 내용이 적용됩니다.
- AAB 파일 생성 시작하기
- [Build -> Generate Signed Bundle / APK] 메뉴를 선택합니다.
- 배포 파일 형식을 선택하는 창에서 [Android App Bundle]을 선택한 후 <Next> 를 누릅니다.
- 키 저장소와 서명 키(업로드 키) 만들기
- 이제 키 저장소가 필요합니다. 키 저장소(key store)는 일종의 인증서라고 생각하면 됩니다. 키 저장소로 내가 만든 앱에 서명해야지만 앱을 출시할 수 있습니다.
- 만약 이전에 만들어 놓은 키 저장소가 있다면 <Choose existing>을 클릭하여 선택하고
- 새로 만들어야 한다면 <Create new>를 클릭합니다.
- 키 저장소 생성 창이 열리면 경로 부분에 저장할 위치를 선택하고 이름을 입력한 후 <OK>를 누릅니다.
- 이어서 키 저장소 경로 아래 비밀번호를 입력합니다.
- 그리고 키 영역에서 별칭과 비밀번호, 기타 키 정보를 입력한 후 <OK>를 클릭하면 확장자가 .jks 인 키 저장소 파일이 만들어집니다.
- 키스토어는 keytool을 이용하여 터미널에서도 만들 수 있습니다.
- keytool -genkey -v -keystore test -storepass aaaaaaa -alias my_key -keypass bbbbbbb -keyalg RSA -keysize 2048 -validity 10000
- 앱 서명하기
- [Export encrypted key ... (암호화된 키 내보내기)] 체크박스를 해제하고 <Next>를 클릭합니다. 만약 이미 Play 스토어에 등록된 앱을 Play 앱 서명으로 다시 등록하려면 [Export encrypted key ...] 체크박스를 체크하고 경로를 지정합니다. 그러면 서명 키로 암호화된 *.pepk 파일로 저장됩니다. 이 파일로 기존 앱을 Play 앱 서명으로 등록할 수 있습니다.
- 릴리즈용 빌드하기
- 마지막으로 AAB 파일을 디버그용으로 만들 것인지 릴리즈용으로 만들것인지를 선택합니다. [release]를 선택하고 <Finish>를 클릭하면 서명된 AAB 파일로 빌드를 시작합니다.
- 빌드된 AAB 파일 확인하기
- 빌드를 마치면 루트 디렉터리에 app\release\app-release.aab 파일이 만들어집니다. 파일명에서 app은 프로젝트의 모듈명에 해당합니다.
- 고유한 패키지명으로 바꾸기
구글 플레이에 앱 등록하기
구글 개발자 계정 생성과 구글 플레이 콘솔에서 앱 설정하는 부분은 어렵지 않게 흐름대로 따라면서 진행하면 되므로 건너뛰도록 하겠습니다.
- 앱의 모든 정보를 입력했으면 대시 보드 아래에 있는 [Google Play에 앱 게시]에서 앱을 게시할 수 있습니다.
- 할 일 목록에서 [국가 및 지역 선택]은 안내에 따라 간단하게 추가할 수 있으며 [새 버전 만들기]를 클릭하면 앞에서 만든 AAB 배포 파일을 등록하는 프로덕션 화면으로 이동합니다.
- 프로덕션 화면에서 [새 버전 만들기]를 클릭합니다.
- 구글 Play 앱 서명을 사용할 것인지를 선택하는 화면이 나옵니다. <계속>을 클릭합니다.
- 이어지는 등록 화면에서 App Bundle 부분에 준비한 AAB 파일을 업로드하고 버전 세부정보에 내용을 입력한 후 <저장> 을 클릭합니다. 그러면 <버전 검토>가 활성화되므로 이 버튼을 클릭합니다.
- 모든 정보를 등록했습니다. 이제 앱 만들기 화면에서 <프로덕션 트랙으로 출시 시작> 버튼이 활성화되면 클릭합니다. 이후 구글에서 심사를 거쳐 구글 플레이에 등록됩니다.
'Android' 카테고리의 다른 글
[깡쌤의 안드로이드 프로그래밍 with 코틀린][3. 앱의 기본 기능 구현하기] 6. 뷰를 이용한 화면 구성 (0) | 2024.12.25 |
---|---|
[깡쌤의 안드로이드 프로그래밍 with 코틀린][2. 코틀린 이해하기] 5. 코틀린의 유용한 기법 (0) | 2024.12.25 |
[깡쌤의 안드로이드 프로그래밍 with 코틀린][2. 코틀린 이해하기] 4. 코틀린 객체지향 프로그래밍 (0) | 2024.12.25 |
[깡쌤의 안드로이드 프로그래밍 with 코틀린][2. 코틀린 이해하기] 3. 코틀린 시작하기 (0) | 2024.12.25 |
[깡쌤의 안드로이드 프로그래밍 with 코틀린][1. 안드로이드 앱 개발 준비하기] 2. 안드로이드 앱의 기본 구조 (0) | 2024.12.25 |