Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- DP
- PS
- 안드로이드스튜디오
- 자료구조
- 안드로이드
- Android
- 코딩
- 웹
- 프로그래밍
- java
- 리액트네이티브
- kotlin
- 알고리즘
- 개발자
- 백준
- Python
- 코딩테스트
- 자바
- 프로그래머스
- C++
- androidstudio
- 동적계획법
- 비전공자를위한이해할수있는IT지식
- programming
- 씨쁠쁠
- 파이썬
- 앱개발
- Coding
- algorithm
- IT도서
Archives
- Today
- Total
한 발짜국
Android Studio(Kotlin) 한 줄 읽기 #1 (binding, Gradle, Module, setContentView, Dex File) 본문
앱
Android Studio(Kotlin) 한 줄 읽기 #1 (binding, Gradle, Module, setContentView, Dex File)
발짜국 2022. 11. 9. 02:02
안드로이드 프로젝트에서 항상 마음에 걸린 건 왜 이 코드를 쓰는지 모르고 구글링에 의존해 개발하는 것 같다는 점이었다.
그래서 한 번 그 갈증을 해결해보고자.. 앞으로 코드를 한 줄씩이라도 공부해보려고 한다.
조금이라도 헷갈리거나 아는 것 같아도 설명이 안되는 부분도 최대한 적어봐야겠다.
그리고 누굴 알려주기 위함이 아닌 메모 정리와 같은 형식으로 기록만 남길 예정이다.
대부분 구글링과 안드로이드 공식 문서를 참고했다.
val binding by lazy { ActivityArchiveAddBinding.inflate(layoutInflater) }
binding (뷰 결합)
- 뷰와 상호작용하는 코드를 쉽게 작성 가능
- 모듈에서 사용 설정된 뷰 결합은 모듈에 있는 각 XML 레이아웃 파일의 결합 클래스를 생성
- 바인딩 클래스의 인스턴스에는 상응하는 레이아웃에 ID가 있는 모든 뷰의 직접 참조가 포함
- 대부분의 경우 뷰 결합이 findViewById를 대체
사용
- 모듈에 뷰 결합 사용하도록 설정되면 (아마도 build.gradle에 viewBinding{ enable=true} 추가 의미?) 모듈에 포함된 각 XML 레이아웃 파일의 결합 클래스 생성됨
- 각 결합 클래스에는 루트 뷰 및 ID가 있는 모든 뷰의 참조가 포함
- 결합 클래스의 이름은 XML 파일의 이름을 카멜 표기법으로 변환, 끝에 ‘Binding’ 추가해 생성
- ex) activity_archive_add.xml → ActivityArchiveAddBinding
- inflate() 메서드 → 생성된 결합 클래스 포함, 활동에서 사용할 결합 클래스 인스턴스 생성
- getRoot() 메서드 호출 or binding.root(Kotlin 속성 구문)을 사용해 루트 뷰 참조를 가져옴
- (Activity) 루트 뷰를 setContentView()에 전달해 화면상의 활성 뷰로 만듦(Fragment) onCreateView() 메서드에서 루트 뷰를 반환하여 화면상의 활성 뷰로 만듦
tools:viewBindingIgnore=”true”
- 바인딩 클래스를 생성할 필요가 없는 레이아웃이 있다면, 레이아웃 파일의 최상위 뷰에 추가
- 레이아웃 파일의 최상위 뷰에서만 사용 가능 (루트 뷰가 아닌 하위 뷰에서는 동작 X)
Gradle (빌드 배포 도구, Build ToolKit)
- 작성한 소스 코드와 의존성 라이브러리들을 묶어서 APK 등 배포할 수 있는 형태로 패키징
- Gradle을 사용해 빌드 프로세스를 자동화하고 관리하는 한편, 개발자가 유연한 맞춤 빌드 구성을 정의하도록 허용
- 안드로이드 스튜디오와는 독립적으로 실행
- 안드로이드 스튜디오는 별도 빌드 ToolKit 존재하지 않으므로, Gradle을 빌드 ToolKit으로 채택해 사용
- 안드로이드 스튜디오는 IDE(Integrated Development Environment, 통합 개발 환경)로써 코드의 편집만 담당
- 빌드하여 패키징하는 과정은 모두 Gradle이 담당
컴파일러
소스코드 → 덱스 파일 변환
그 외 → 컴파일된 리소스 형태 변환
Gradle + Android Plugin
컴파일러가 변환한 파일을 모아 APK 등의 형태로 패키징
기타 정리
모듈 (Module)
- 프로그램을 구성하는 구성 요소, 관련된 데이터와 함수를 하나로 묶은 단위
- 독립적인 기능과 유일한 이름 사용 필요
- 용도가 비슷한 함수나 추상화된 자료, 객체, 메서드 등
setContentView()
- XML 파일의 전개(inflate)를 수행
- XML 레이아웃 리소스 ID에 해당하는 파일을 파싱하여 뷰(View) 생성, 뷰의 속성 지정, 뷰 간의 상하관계에 맞춰 배치
덱스 파일 (Dex File)
- Android Runtime에서 궁극적으로 실행되는 코드가 포함된 파일, 기계어
반응형
'앱' 카테고리의 다른 글
Android Studio(Kotlin) 한 줄 읽기 #2 (lateinit, RecyclerView, Property, 의존성 주입) (0) | 2022.11.11 |
---|---|
Android Studio 에뮬레이터 오류 (The emulator process for AVD has terminated) (0) | 2022.02.22 |
ReactNative에서 TypeScript? (0) | 2022.02.18 |
안드로이드 간단한 어플 만들기 - Game Selector (feat. 오징어게임) (2) | 2021.11.02 |
Comments