Android Modules
Android Project Files
Android Studio 에서 생성한 프로젝트들은 보통 다음과 같은 디렉토리 및 파일 구조를 가진다.
왼쪽 그림은 구조를 단순화 하여 gradle 기반의 작업을 쉽게 해주는 Android view 이고, 오른쪽 그림은 실제 디렉토리 구조인 Project view 이다.
.idea - IntelliJ IDEA 의 설정 디렉토리.
app - 어플리케이션 모듈 디렉토리와 파일이 포함된 디렉토리.
build - 모든 프로젝트 모듈에 대한 빌드 출력을 저장하는 디렉토리.
gradle - gradle-wrapper 파일들을 포함하는 디렉토리.
build.gradle - 응용 프로그램 모듈에서 사용하는 기본 빌드 설정 파일. 소스 버전 관리 시스템 으로 유지.
setting.gradle - 빌드할 하위 프로젝트 지정.
app/ module structure
app/build/
빌드시에 생성된 파일 및 디렉토리 포함.
app/libs/
private 라이브러리 포함.
app/src/
ActivityName.java 등 .java, .aidl 파일 같은 다른 모든 소스 코드 파일들 포함.
app/src/androidTest/
JUnit 테스트 프레임워크를 확장한 소스코드, 리소스 포함.
app/src/main/java/com/project/app/
Activity 자바 소스 파일 포함.
app/src/main/res/
drawable 파일 같은 어플리케이션 리소스 파일 포함.
app/src/main/res/drawable/
PNG, JPEG, GIF 같은 비트맵 이미지 파일들 포함.
app/src/main/res/mipmap/
앱에 설치될 런처 아이콘 포함. 디바이스의 해상도에 따라 mipmap-xxxhdpi 같은 디렉토리들에서 리소스 제공.
app/src/main/res/layout/
화면 레이아웃으로 컴파일될 XML 파일들 포함.
app/src/main/res/menu/
어플리케이션 메뉴를 정의하는 XML 파일들 포함.
app/src/main/res/values/
res 디렉토리의 다른 리소스들과는 달리, 이 디렉토리의 리소스는 파일 이름으로 참조될 수 없고, R class 를 사용하여 컨트롤.
app/src/main/res/AndroidManifest.xml
어플리케이션의 Activities, Service, Intent receivers, content providers, permission, API level, 외부 라이브러리등을 정의.
app.iml
IntelliJ IDEA 모듈
build.gradle
응용 프로그램 모듈에서 사용하는 기본 빌드 설정 파일. 소스 버전 관리 시스템 으로 유지.
proguard-rules.pro
proguard 설정 파일
Android Modules
Android SDK 는 우리가 만들 프로젝트가 올바르게 컴파일되고 패키징 될 수 있도록 특정한 구조를 따를 것을 요구하고 있지만, Android Studio 를 사용하면 자동으로 그 구조를 만들어 준다. 새 프로젝트와 모듈들을 생성하기 위해 Android Studio 를 사용하면, 프로젝트에 꼭 필요한 파일과 디렉토리들을 자동으로 생성한다.
module 은 특정 타입의 소스 코드와 리소스를 캡슐화한 최소 단위이다.
Android Application Modules
안드로이드 어플리케이션 모듈은 소스 코드, 리소스 파일, 어플리케이션 설정 파일을 포함한다.
이 모듈의 컨텐츠들은 디바이스에 설치될 .apk 파일로 빌드된다.
Test Modules
이 모듈은 프로젝트를 테스트하는 코드를 포함하고, 디바이스에서 실행되는 테스트 어플리케이션으로 만들어진다.
기본적으로 Android Studio 는 JUnit 테스트를 위해 androidTest 모듈을 생성한다.
Library Modules
이 안드로이드 프로젝트에서 참조할 수 있는 공유 가능한 Android 소스 코드와 리소스를 포함한다.
재사용 가능한 공통 코드를 유용하게 쓸 수 있다.
이 모듈은 장치에 설치될 수 없지만, 런타임시 .apk 파일에 포함된다.
App Engine Modules
이 모듈은 백엔드 개발을 위한 앱 엔진 자바 서블릿 모듈로, 백엔드 기능을 쉽게 추가할 수 있게 한다.
클라우드로 사용자 데이터 백업, 클아이언트 앱으로 자료 전송, 실시간 상호 작용, GCM(Google Cloud Messageing) 을 통한 푸시 알림 등이 백엔드 기능이다.