이번에는 이전에 생성한 프로젝트 내부의 구조에 대해 살펴보도록 한다.
Project 를 만들고 나면, 좌측의 Project View 를 통해서 res/layout 디렉토리에 생긴 메인 Activity (New Project 에서 생성한)를 열어본다.
위와 같은 구조의 프로젝트 내 파일들이 보이게 된다.
Activity Layout
Activity 의 Layout 을 정의하는 XML 이며, Design 과 Text (코드)를 볼 수 있는 Tab 이 모두 존재한다.
이 Activity Layout XML 에는 앱 상단의 앱바와 Floating Action Button 같은 (향후에 더욱 자세히 보도록 하고) 컴포넌트의 속성이 XML 의 Element 와 Attribute 로 설정되어있다
위 처럼 기본적인 Blank Activity 를 생성하면 Action Bar, Content, Floating Action Button 이 생성된다.
Activity 의 전체적인 Layout 은 activity XML 에 정의가 되고, TextView 로 구성된 Content 영역은 content XML 에 정의되어있다.
Activity XML 의 중간 쯤에 보면
<include layout="@layout/content_hello" />
이 들어가 있고, 이렇게 content_hello 라는 Layout 요소를 추가적으로 포함(include) 하도록 되어있다. 그리고, content_hello.xml 파일을 보면
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</RelativeLayout>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</RelativeLayout>
위 처럼 TextView Element 로 추가적인 Layout 이 구성됨을 볼 수 있다. 텍스트 내용으로 "Hello World!" 라는 텍스트도 보인다.
Main Activity.java
app\src\main\java\com\goodjoon\helloandroid\HelloActivity.java 파일을 열어본다.
현재 Main Activity 는 HelloActivity 로 등록되어 있으며. Activity XML 리소스 파일이 이 java 파일에 연결되어 있음을 확인할 수 있다.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hello);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
setSupportActionBar(toolbar);
앱을 실행시키면 이 Activity 클래스가 실행되고 Main Activity XML 리소스가 로드되어 Hello World! 가 출력되는 메인 Activity 가 나옴을 확인할 수 있다.
앱 Manifest
app\src\main\AndroidManifest.xml 파일은 앱의 기초적인 특성과 각 컴포넌트를 정의하는 파일이다. 컴포넌트를 추가하면 이 파일이 지속적으로 변경되게 된다.
Gradle 빌드파일
app\build.gradle 파일은 Project View 에서는 "Gradle Scripts" 라는 별개의 그룹으로 표시되는데, 실제 위치는 app\ 디렉토리 밑에 존재한다.
Android Studio 는 앱을 컴파일 하고 빌드하는데에 Gradle 을 사용한다.
프로젝트의 각 모듈 별로 build.gradle 파일이 존재하며 프로젝트 전체에 또 하나의 build.gradle 파일도 존재한다. 보통 각 모듈 내의 build.gradle 파일이 주요 관심 대상이 된다. 지금 모듈은 app 모듈이다.
위의 build.gradle 은 프로젝트 전체에 대한 build.gradle 스크립트 (프로젝트디렉토리\build.gradle)이고, app 모듈에 대해 build.gradle 파일(프로젝트디렉토리\app\build.gradle)이 추가적으로 존재한다.
Module build.gradle 파일 안에 보면 defaultConfig 을 포함한 몇가지 설정이 있다
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.goodjoon.helloandroid"
minSdkVersion 17
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
}
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.goodjoon.helloandroid"
minSdkVersion 17
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
}
- compileSdkVersion
앱을 Compile 하기 위해 사용하는 Platform SDK 의 버전을 명시한다. 기본적으로 설치되어있는 SDK 버전 중 가장 최신의 SDK 를 사용하도록 설정되어있다. 위 설정에서는 API Level 23 (=SDK Version 23 = Android 6.0 = 마쉬멜로우) SDK 를 사용하도록 되어있으므로, 만약 SDK 가 설치되어있지 않다면, SDK Manager로 SDK 를 설치해야 한다.
SDK 버전이 높다고 해서 구버전 앱을 빌드할 수 없는게 아니며(하위호환성 유지) 오히려 낮은 버전의 SDK 로 빌드하게 되면 더 높은 버전의 Platform 에서는 새로운 기능을 사용할 수 없거나 더 좋은 UX 를 사용할 수 없게된다. - applicationId
New Project Window 에서 지정했던 Package 이름으로, App 의 유일한 식별자이다. - minSdkVersion
현재 앱이 지원하는 가장 낮은 SDK 버전을 지정 - targetSdkVersion
현재 앱이 지원하는 가장 높은 SDK 버전. 자신이 테스트해본 가장 높은 버전을 명시하면 된다
기타 리소스
- drawable-<density>/ 리소스 디렉토리 <ldpi(0.75), mdpi(1.0), hdpi(1.5), xhdpi(2.0)>
이 디렉토리에는 밀도 독립 픽셀(DIP: Density Independent Pixel)별 drawable 이미지나 아이콘 같은 "그려지는" 리소스가 위치한다. DIP 에 대해서는 나중에 더 설명하도록 하자. 일단, Android 는 다양한 해상도를 갖는 기기가 많으므로, pixel (px) 단위가 아닌 dp 나 sp 단위로 크기를 지정해야 한다.
참조는 @drawable/image.png 와 같이 사용한다.
- layout/
activity XML 과 같이 앱의 UI 를 정의하는 파일들이 위치한다.
- menu/
앱의 메뉴 아이템을 정의하는 파일들이 위치
- mipmap/
Launcher 아이콘(앱아이콘)으로, drawable/ 폴더 대신 이 폴더를 사용한다. ic_launcher.png 아이콘 이미지들이 해상도별로 들어있다. - values/
String 이나 Color 정의와 같은 리소스 컬렉션을 포함하는 XML 파일들이 위치하는 디렉토리 이다.
반응형
'Software Development > Mobile' 카테고리의 다른 글
안드로이드 개발 #4 - 첫 UI 개발 (1567) | 2016.02.10 |
---|---|
안드로이드 개발 #3 - 앱 실행하기 (836) | 2016.02.08 |
안드로이드 개발 #1 - Android Studio 설치 및 새프로젝트 생성 (502) | 2016.02.06 |
retainCount 값에 의존하지 말기 (1525) | 2010.10.12 |
P3P 와 쿠키 사용 관계 (466) | 2010.02.25 |