안드로이드 앱은 크게 자바 코드리소스(res; resource)로 구성된다. 두 개로 나누면 이해하기 쉽고 유지관리가 용이하다.

 

매니패스트 : 앱이 실행되기 전에 시스템이 알아야 할 내용들을 정의한다.

더보기

[ 매니패스트 파일에 들어갈 수 있는 태그 항목 ]

<action> <instrumentation> <provider>
<activity> <intent-filter> <receiver>
<activity-alias> <manifest> <service>
<application> <meta-data> <uses-configuration>
<category> <permission> <uses-library>
<data> <permission-group> <uses-permission>
<grant-uri-permission> <permission-tree> <uses-sdk>

이 중 <activity>, <service>, <receiver>, <provider>와 같은 태그들은 앱 구성요소를 등록하기 위해 사용됨.

리소스의 사용

리소스가 갱신되면 그 때마다 리소스의 정보가 R.java 파일에 자동으로 기록되며, 그 정보는 리소스에 대한 내부적인 포인터 정보가 된다.

 

res 폴더와 assets 폴더의 차이점

애셋 : 용량이 큰 데이터를 의미함(ex. 동영상, 웹페이지). 빌드되지 않음.

리소스 : 빌드되어 설치파일에 추가됨.

 

res/values 폴더 : 문자열이나 기타 기본 데이터 타입에 해당하는 정보들이 저장됨. (ex. strings.xml)

res/drawable 폴더 : 이미지 저장 (해상도에 따라 drawable-xhdpi, drawable-hdpi, drawable-mdpi 등으로 나누어 저장 가능)

 

리소스 참조 : Resources 객체는 Context.getResources() 메서드를 이용해 액티비티 안에서 언제든지 참조 가능하다.

 

스타일과 테마 : 여러가지 속성들을 한꺼번에 모아서 정의한 것.

(ex. 다이얼로그(Dialog) 테마로 정의하여 액티비티에 적용하면 대화상자 모양으로 보임.)

res/values/themes.xml 파일에 코드를 추가, 스타일을 직접 정의하여 사용할 수 있다.

 

그래들(Gradle) : 안드로이드 스튜디오에서 사용하는 빌드 및 배포 도구

 

build.gradle 파일은 2개가 있다.

build.gradle (Project:) 프로젝트 안에 들어있는 모든 모듈에 적용되는 설정을 담고 있다. 이 파일을 수정하는 경우는 거의 없음. (가끔 외부 도구를 포함시키기 위해 buildscript -> dependencies -> classpath를 추가하기도 함)
build.gradle (Module:app) 각각의 모듈에 대한 설정을 담고 있으며, 이 파일은 app 모듈의 설정 정보를 담고 있음.
만약 새로운 모듈을 추가한다면 그 모듈에 대한 build.gradle 파일도 새로 추가된다.

 

build.gradle (Module: app)

  • applicationId : 앱의 id 값. (id 값은 전 세계에서 유일한 값으로 설정되어야 함)
  • compileSdkVersion : 빌드를 진행할 때 어떤 버전의 SDK를 사용할 것인지 지정. (보통 최신 버전)
  • minSdkVersion : 이 앱이 어떤 하위 버전까지 지원하도록 할 것인지 지정.
  • targetSdkVersion : 이 앱이 검증된 버전이 어떤 SDK 버전인지를 지정.
  • dependencies : 외부 라이브러리를 추가할 수 있음.
  • implementation A : 직접 추가한 외부 라이브러리 A

 

settings.gradle : 프로젝트의 이름과 함께 어떤 모듈을 포함할 것인지에 대한 정보

 

기타 등등의 파일 (안스에서 보통 자동설정하니까 굳이 열 일이 없음)

local.properties : 현재 사용하고 있는 PC에 설치된 SDK의 위치

gradle.properties : 메모리 설정

gradle-wrapper.properties : 그래들 버전 정보 등