커니 의 안드로이드 이야기 : : Android Studio 를 배워 보 자 - ( 1 ) 주요 특징 및 빌드 시스템 
 Android Studio 를 배워 보 자 - ( 1 ) 주요 특징 및 빌드 시스템 
 2014 . 5 . 10 . 00 : 15 
 안드로이드 개발 을 위한 IDE 인 Android Studio 가 공개 된 지도 약 반년 이 다 되 어 가 네요 . 처음 공개 되 었 을 때 는 이클립스 용 안드로이드 개발 플러그 인 인 ADT ( Android Development Tools ) 에 비해 다소 불 안정 한 모습 을 보여서 생각 보다 실망 을 많이 했었 는데 , 이제 는 제법 그럴듯한 모양새 도 갖추 고 , 많이 안정 된 모습 을 보여 주 고 있 습니다 . 즉 , 이제 는 ' 이클립스 를 떠나 야 할 때 ' 라는 것 이 죠 ! 
 이클립스 를 사용 하 다가 갑자기 안드로이드 스튜디오 를 사용 하 면 생긴 것 도 다르 고 , 단축키 도 다시 익혀야 해서 당분간 은 혼란 스러운 것 이 한 두 가지 가 아닐 것 입니다 . ( 저 또한 마찬가지 였 구요 ) 따라서 , 안드로이드 스튜디오 로 의 성공 적 인 기변 ( ?!) 을 위해 , 안드로이드 스튜디오 에 대한 간략 한 소개 부터 시작 하 여 이클립스 와 다른 점 , 그리고 안드로 드 스튜디오 에서 사용 하 는 새로운 빌드 시스템 까지 차근차근 알아보 겠 습니다 . 
 본 포스트 는 Android Studio 0 . 3 . 5 를 기준 으로 작성 되 었 습니다 . 
 추후 업데이트 로 인해 변경 사항 이 있 을 수 있 으니 참고 부탁 드립니다 . 
 업데이트 : 0 . 5 . 7 버전 기준 으로 한 동영상 강좌 가 업데이트 되 었 습니다 . 전반 적 인 내용 은 비슷 하 지만 , 몇몇 부분 변경 사항 이 있 으므로 본문 내용 을 볼 때 참고 부탁 드립니다 . 
 안드로이드 스튜디오 의 프로젝트 구조 
 먼저 , 안드로이드 스튜디오 로 새 프로젝트 를 하나 생성 합니다 . 프로젝트 를 생성 하 는 방법 은 이클립스 와 다르 지 않 으므로 따로 여기 에서 다루 지 않 겠 습니다 . ( 혹시 생 성 과정 이 궁금 하 신 분 은 2013 / 05 / 21 - 안드로이드 를 위한 새로운 IDE , Android Studio 를 참조 하 세요 ) 
 앞 에서 잠시 언급 했 듯이 , 안드로이드 스튜디오 는 이클립스 와 다른 빌드 시스템 을 사용 합니다 . 새로운 빌드 시스템 은 Gradle 을 사용 하 며 , 시스템 에 Gradle ( 조금 더 정확히 말 하 자면 , gradlew ) 이 존재 하 지 않 으면 인터넷 에서 해당 툴 을 자동 으로 다운로드 합니다 . 따라서 , 프로젝트 를 생성 할 때 인터넷 연결 이 필요 할 수 있 습니다 . ( Gradle 및 gradlew 에 대해서 는 뒤 에서 조금 더 자세히 알아보 겠 습니다 ) 
 프로젝트 를 생성 하 면 다음 과 같 은 구조 로 파일 들 이 생성 됩니다 . 이클립스 때 의 프로젝트 구조 와 다소 다른 모습 을 하 고 있 는 것 을 볼 수 있 습니다 . 
 위 의 프로젝트 구성 은 크 게 다음 과 같이 나눌 수 있 습니다 . 
 프로젝트 를 구성 하 는 각 부분 에 대해 조금 더 자세히 알아보 겠 습니다 . 
 이클립스 에서 애플리케이션 이나 라이브러리 가 각각 하나 의 프로젝트 로 구성 되 어 있 던 것 과 달리 , 안드로이드 스튜디오 의 프로젝트 는 범위 가 더 넓 습니다 . 따라서 , 프로젝트 는 ' 모듈 ' 이 라 불리 는 작 은 프로젝트 들 로 구성 됩니다 . 예 를 들 어 , 어떤 프로젝트 가 애플리케이션 프로젝트 하나 와 안드로이드 라이브러리 프로젝트 하나 로 구성 되 어 있 을 경우 이클립스 에서 는 이 두 개 의 프로젝트 가 각각 별개 의 프로젝트 로 존재 하 는 반면 , 안드로이드 스튜디오 에서 는 이 두 개 의 작 은 프로젝트 들 을 모듈 로 구성 하 여 하나 의 프로젝트 로 관리 할 수 있 습니다 . 
 모듈 은 애플리케이션 이나 라이브러리 를 구성 하 는 최소 단위 입니다 . 이클립스 의 프로젝트 와 동일 한 역할 을 합니다 . 모듈 은 독립 적 으로 존재 할 수 없 으며 , 항상 프로젝트 내 에 포함 되 어 있 어야 합니다 . 
 빌드 에 사용 하 는 Gradle 툴 을 편리 하 게 사용 할 수 있 도록 도와 주 는 일종 의 스크립트 입니다 . Gradle wrapper 는 적절 한 Gradle 바이너리 를 자동 으로 다운로드 해 주 므로 , 별도 로 Gradle 을 설치 하 지 않 아도 빌드 를 진행할 수 있 도록 해 줍니다 . 
 build . gradle : 빌드 스크립트 파일 입니다 . 보통 여기 에 는 프로젝트 내 모듈 들 의 빌드 진행시 공통 으로 적용 해야 하 는 설정 들 을 적 어 줍니다 . 
 FirstAndroidStudio . iml : 안드로이드 스튜디오 에서 사용 하 는 프로젝트 설정 파일 입니다 . 
 gradlew / gradlew . bat : Gradle wrapper 를 통해 빌드 를 진행 하 기 위한 스크립트 입니다 . ( 자세 한 내용 은 추후 다룹니다 ) 
 local . properties : 빌드 를 진행할 때 필요 한 환경 변수 정보 를 저장 하 는 파일 입니다 . 안드로이드 SDK 의 경로 가 이곳 에 저장 됩니다 . 
 settings . gradle : 빌드 와 관련 된 환경 설정 및 같이 빌 드 되 어야 할 하위 모듈 들 의 정보 를 포함 하 고 있 습니다 . 
 프로젝트 를 구성 하 는 파일 들 을 관찰 해 보 면 , 이클립스 때 프로젝트 구성 에 비해 파일 들 이 많 은 것 같 다는 인상 을 받 으실 겁니다 . 이 는 , 안드로이드 스튜디오 ( IDE ) 와 빌드 시스템 이 서로 독립 적 이 기 때문 입니다 . 이클립스 에서 는 프로젝트 빌드 를 이클립스 내 에서 담당 했 지만 , 안드로이드 스튜디오 는 코드 의 편집 만 을 담당 할 뿐 , 빌드 는 Gradle 을 통해 모두 수행 됩니다 . 때문 에 , 간혹 안드로이드 스튜디오 의 프로젝트 설정 과 Gradle 빌드 설정 이 동기 화 되 지 않 아 스튜디오 에서 에러 로 표시 하 는 경우 도 있 습니다 . 하지만 , 빌드 절차 와 IDE 가 분리 되 어 있 기 떄문에 프로젝트 를 더 깔끔 하 게 관리 할 수 있 게 되 었 습니다 . 
 프로젝트 구성 에 대해 알아보 았 으니 , 이제 는 실질 적 으로 애플리케이션 을 구성 하 는 모듈 의 구조 에 대해 자세히 알아볼 차례 입니다 . 모듈 은 다음 과 같이 구성 되 어 있 습니다 . 
 그림 4 . 모듈 의 구조 
 각 부분 에 대해 자세히 알아봅시다 . 
 빌드 과정 에서 생성 된 파일 ( R . java 등 ) 및 최종 산출물 ( *. apk ) 이 이곳 에 저장 됩니다 . 이클립스 기반 프로젝트 에서 gen , bin 폴더 와 동일 한 역할 을 합니다 . 
 소스 및 리소스 파일 이 저장 됩니다 . main 폴더 아래 에 자바 소스 를 저장 하 는 java 폴더 와 리소스 를 저장 하 는 res 폴더 가 있 습니다 . 이 와 함께 애플리케이션 의 각종 정보 를 저장 하 는 매니 페스트 파일 ( AndroidManifest . xml ) 이 있 습니다 . 
 쓸데없이 main 폴더 가 왜 하나 더 있 을까 궁금 하 신 분 들 도 많 을 텐데 , 이 에 대한 자세 한 내용 은 추후 다른 포스트 에서 다루 도록 하 겠 습니다 . 
 모듈 의 빌드 방법 이 정의 된 빌드 스크립트 입니다 . 빌드 에 사용 할 SDK 버전 부터 시작 하 여 애플리케이션 버전 , 사용 하 는 라이브러리 등 다양 한 항목 을 설정 하 는 것 이 가능 합니다 . 
 FirstAndroidStudio . iml 
 안드로이드 스튜디오 에서 사용 하 는 모듈 설정 정보 입니다 . 
 위 에서 가장 핵심 역할 을 하 는 것 은 바로 build . gradle 파일 입니다 . build . gradle 파일 내부 를 살펴보 면서 , Gradle 빌드 시스템 에 대한 간략 한 내용 도 같이 알아보 겠 습니다 . 
 build . gradle 파일 파헤치 기 
 예제 로 작성 한 모듈 의 build . gradle 내용 은 다음 과 같 습니다 . 
 스크립트 를 각 부분 으로 나누 어 자세히 알아보 겠 습니다 . 
 1 . 빌드 툴 및 저 장소 경로 설정 
 정보 : 메 이븐 중앙 저 장소 ( Maven Central repository ) 
 프로젝트 를 만들 다 보 면 , 여러 라이브러리 를 사용 하 게 됩니다 . 그런데 , 프로젝트 의 개수 가 많 아 지 고 , 각 프로젝트 에서 참조 하 는 오픈 소스 라이브러리 가 많 아 지 면 빌드 를 진행할 때 각 라이브러리 들 을 관리 하 기 가 힘들 어 집니다 . ( 각 프로젝트 간 중복 되 는 라이브러리 를 관리 하 기 어려움 과 클래스 패스 를 추가 로 설정 해야 하 는 불편 함 등 ) 
 이러 한 문제 를 해결 하 기 위해 , 메 이븐 빌드 시스템 에서 는 라이브러리 를 하나 의 저 장소 에 모아 놓 은 후 , 빌드 스크립트 에 필요 한 라이브러리 의 이름 과 버전 을 적 으면 빌드 진행 시 자동 으로 해당 라이브러리 를 다운로드 하 여 빌드 를 진행 합니다 . 덕분 에 추가 로 라이브러리 를 관리 할 필요 가 없 어 다수 의 프로젝트 를 쉽 게 관리 할 수 있 습니다 . 
 2 . 안드로이드 플러그인 적용 및 설정 
 compileSdkVersion : 빌드 에 사용 할 안드로이드 SDK 버전 입니다 . API Level 로 지정 하 며 , 여기 에서 는 19 ( 안드로이드 4 . 4 / KitKat ) 버전 을 사용 하 고 있 습니다 . 
 buildToolsVersion : 빌드 에 사용 할 툴 버전 을 지정 합니다 . 
 minSdkVersion : 애플리케이션 을 실행 하 기 위한 최소 버전 을 입력 합니다 . 
 targetSdkVersion : 애플리케이션 이 주로 실행 될 버전 을 지정 합니다 . 
 위 에서 minSdkVersion , targetSdkVersion 은 매니 페스트 ( AndroidManifest . xml ) 에서 도 정의 해 주 는 내용 이 지만 , 이곳 에 지정 해 주 는 것 이 우선 순위 가 더 높 습니다 . ( 매니 페스트 와 빌드 스크립트 에 모두 값 이 지정 되 어 있 는 경우 빌드 스크립트 에 정의 된 값 사용 ) 
 3 . 빌드 에 필요 한 라이브러리 설정 
 모듈 빌 드시 사용 할 라이브러리 를 설정 합니다 . 라이브러리 이름 은 다음 과 같 은 규칙 을 따릅니다 . 
 [ 패키지 이름 ] : [ 라이브러리 이름 ] : [ 버전 명 ] 
 여기 에서 , 버전 명 에 '+' 이 지정 되 어 있 는데 , 이 는 가장 최신 버전 을 사용 하 는 것 을 의미 합니다 . 이 는 소수점 단위 에 도 사용 할 수 있 습니다 . 만약 , 버전 에 2 . 0 . + 을 지정 하 게 되 면 2 . 0 버전 대 중 가장 최신 버전 을 사용 하 게 됩니다 . 
 프로젝트 빌드 및 실행 
 안드로이드 스튜디오 에서 프로젝트 를 빌 드 하 는 것 은 이클립스 와 크 게 다르 지 않 습니다 . 메뉴 에서 Build > Make Project 를 선택 하 면 프로젝트 에 포함 된 모듈 들 을 빌 드 하 여 APK 파일 을 생성 해줍니다 . 
 Make Project 외 에 다른 메뉴 들 이 하 는 역할 은 다음 과 같 습니다 . 
 Make Module [ 모듈 명 ] : 모듈 을 빌 드 하 여 해당 모듈 의 결과물 을 생성 합니다 . 애플리케이션 프로젝트 의 경우 APK 파일 이 생성 됩니다 . 
 Compile Module [ 모듈 명 ] : 애플리케이션 내 리소스 를 컴파일 하 여 R . java 나 AIDL 인터페이스 파일 을 생성 합니다 . 안드로이드 라이브러리 프로젝트 의 경우 다른 모듈 에서 이 모듈 을 참조 할 수 있 도록 AAR ( Android Archive package ) 를 생성 합니다 . 
 빌드 가 완료 된 프로젝트 를 에뮬레이터 나 단말기 에서 실행 하 려면 툴바 에서 실행 버튼 을 누르 거나 , 단축키 ( Shift + F 10 ) 을 누르 면 됩니다 . 
 툴바 의 실행 버튼 ( 녹색 화살표 ) 
 지금 까지 안드로이드 스튜디오 와 새롭 게 바뀐 빌드 시스템 에 대해 알아보 았 습니다 . 안드로이드 스튜디오 도 그렇 고 , 빌드 시스템 도 이전 의 안드로이드 개발 과 는 다른 점 이 많 아 적응 하 기 가 쉽 지 는 않 을 것 입니다 . 하지만 시간 을 두 고 조금 씩 훑어본다는 느낌 으로 보 시 면 적응 하 는 데 에 는 큰 무리 가 없 을 것 입니다 . 
 커 니 개발 환경 설정 / Tools AAR , Android , Build , Eclipse , gradle , IDE , sdk , studio , 개발 , 개발 툴 , 그 래들 , 빌드 , 스튜디오 , 안드로이드 , 이클립스 , 태그 를 입력 해 주 세요 . , 환경 
 2013 . 11 . 14 19 : 23 
 이클립스 보다 최적화 가 잘 되 어 있 나요 ? 저 는 생소 하 기 도 하 고 오히려 느리 다는 느낌 도 받 는 거 같 습니다 . 설치 과정 에서 문제 가 있 었 던 걸까요 
 2013 . 11 . 15 08 : 48 신고 
 아직 까지 는 공식 적 으로 ' Early Access preview ' 인 만큼 , 문제 가 좀 많 은 것 같 습니다 . ( 당장 최신 버전 인 0 . 3 . 5 에서 도 심각 한 오류 가 하나 있 다죠 . ..) 
 하지만 , IDE 는 제쳐 두 더라도 새로운 빌드 시스템 에 는 슬슬 적응 하 는 것 이 훨 나 을 것 같 습니다 ~ 
 2013 . 12 . 05 13 : 10 
 추후 에 다루 실 주제 일지 도 모르 지만 , 이클립스 프로젝트 를 export 하 여 안드로이드 스튜디오 로 import 하 는 부분 에 대해 궁금 한 점 이 있 습니다 . 
 이클립스 에서 프로젝트 와 안드로이드 스튜디오 의 모듈 이 같 은 역할 을 한다고 하 셨 는데 , 그러면 이클립스 에서 gradle 로 export 한 후 에 , 안드로이드 스튜디오 에서 는 import module 을 사용 해서 들여와야 하 는 것 일까요 ? import project 로 가져오 면 안드로이드 스튜디오 의 기본 구조 와 구조 가 서로 다르 기 때문 에 빌 드 및 실행 에 어려움 이 있 고 , 그렇 다고 새 프로젝트 를 만들 고 모듈 로 가져오 자니 뭔가 이상 한 것 같 기 도 하 고요 . 
 혹시 이클립스 에서 돌리 던 프로젝트 를 안드로이드 스튜디오 에서 import 하 여 빌드 해 보 신 경험 이 있 으시 다면 추후 에 한 번 쯤 다뤄 주 시 면 참 좋 을 것 같 습니다 . 좋 은 글 감사 합니다 . ^^ 
 2014 . 06 . 23 12 : 04 
 안드로이드 스튜디오 에 도 preview 버 젼 이 라고 따로 있 나요 ? 
 말씀 하 신 대로 gradl 화 일 을 코딩 하 여 build 하 였 는데 탐색기 상 에 build 폴더 가 없 군요 . 안 내 바랍니다 . 정식 스튜디오 를 따로 내려 받 아야 하 나요 ? 
 2014 . 06 . 24 08 : 15 신고 
 빌드 폴더 는 프로젝트 를 빌 드 한 결과물 이 저장 되 는 폴더 입니다 . 맨 처음 프로젝트 를 생성 한 경우 없 을 가능 성 이 높 습니다 . 
 2015 . 08 . 03 10 : 18 
 1 . 22 버전 이제 안정 화 가 되 었 나 싶 어서 슬슬 만져 보 는데 . . I 7 1 세대 쓰 는데 . . 
 이클립스 보다 도 느린 느낌 이 드 는데요 
 세팅 문제 인지 . . 좀 더 고 사양 인지 의문 이 드 네요 . 
 문제 는 아직 도 이걸로 플 젝 을 시작 도 못 해 봤 습니다 . 
 2015 . 08 . 04 23 : 04 신고 
 최근 1 . 30 으로 올라오 면서 그 래들 버전 도 2 . 4 로 업데이트 되 었 습니다 . 
 저 는 사실 잘 모르 겠 는데 많 은 분 들 이 많이 빨라졌 다 하 시 더군요 . 
 이클립스 를 쓸 때 보다 빌드 시간 ( Sync 시간 포함 ) 은 확실히 느린 감 이 있 는데 , 그래도 처음 에 비하 면 차차 나아져 가 고 있 으니 익숙 해 지 는 겸 이젠 쓰 기 시작 해야 하 지 않 을까 싶 어요 . 
 2015 . 08 . 19 10 : 45 
 2015 . 09 . 24 00 : 08 
 import module 을 한 후 혼자 서 동기 화 를 해 버리 는 바람 에 에러 가 엄청 많이 떴 습니다 . import module 하 기 전 으로 돌아가 고 싶 은데 어떻게 해야 하 나요 ㅠㅠ 
 김진렬 
 2015 . 10 . 07 09 : 32 
 얼마 전 까지 Eclipse 로 개발 하 다가 Android Studio 로 이사 온 사람 입니다 . 
 너무나 잘 정리 해서 한눈 에 이해 할 수 있 었 습니다 . 너무나 고맙 습니다 . 
 2016 . 01 . 24 12 : 34 
 슈 카파 
 2016 . 02 . 22 10 : 53 
 공부 에 참고 하 기 위해 왔 다가 블로그 에 스크랩 해 갑니다 ~ 
 2016 . 03 . 24 10 : 53 
 안녕 하 세요 . 안드로이드 공부 를 시작 했 는데 , 올려 주 신 자료 들 이 도움 이 많이 되 네요 . 감사 합니다 . 
 보 면서 궁금 한 게 하나 있 어서 , 댓글 남 깁니다 . 
 글 에 보 면 maven Central 이 나오 는데 , maven 중앙 저 장소 에 ( 클라우드 처럼 ) 라이브러리 파일 이 있 고 , Dependencies 에서 com . ~~ 지정 해 준 필요 한 라이브러리 를 다운 받 는다고 저 는 이해 했 습니다 . 
 Android Studio 에서 Blank Activity 로 새로운 프로젝트 를 만들 면 , 아래 와 같이 Build . gradle 에 있 더라구요 . 
 applicationId " jayground . test 0407 " 
 maven Central ( ) 를 쓰 지 않 았 는데 , com . android . support : appcompat - v 7 : 23 . 2 . 1 정의 된 라이브러리 를 maven 저 장소 에서 다운 받 는 건가요 ? 
 ◀ PREV [ 1 ] [ · ··] [ 32 ] [ 33 ] [ 34 ] [ 35 ] [ 36 ] [ 37 ] [ 38 ] [ 39 ] [ 40 ] [ · ··] [ 499 ] NEXT ▶ 
 Total : 4 , 175 , 839 Today : 65 Yesterday : 162