안드로이드 앱은 크게 자바 코드와 리소스(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 : 그래들 버전 정보 등
'TIL > 안드로이드 스튜디오' 카테고리의 다른 글
도전!12 - 서비스에서 수신자로 메시지 보내기 (0) | 2025.01.10 |
---|---|
도전!11 - 서비스 실행하고 화면에 보여주기 (0) | 2025.01.10 |
6장 - 위험 권한 부여하기 (0) | 2025.01.08 |
6장 - 브로드캐스트 수신자 (SMS 문자 정보 액티비티에 띄우기) (0) | 2025.01.07 |
duplicate class 에러 (JDK7, JDK8 충돌) (0) | 2025.01.05 |