Android Github action

이미지
안드로이드 Github action을 알아보겠습니다. Github(깃허브) action(액션)은 CI/CD를 제공해 줍니다. https://docs.github.com/en/actions 또한 Github에 적용하기 쉽게 만들어졌는데요. Public(오픈된) Repository(저장소)의 경우 무료로 제공해 줍니다. 오늘 한 번 적용해 봅시다. 적용할 제 repository는 여기입니다. https://github.com/Jaehwa-Noh/Project-Flight-Search-App/tree/compose-flight-search-app Github에 Actions를 누릅니다. 아래의 Simple workflow의 Config를 눌러줍니다. 그러면, 이러한 창이 나옵니다. Github action은 YAML을 읽고 실행합니다. 기본적인 뼈대가 작성되어 있는 상태네요. 이 파일은 .github/workflows에 생성됩니다. 파일 이름을 Build.yml로 3번째 줄의 name은 Build Demo로 변경했습니다. 이렇게 표시됩니다. run-name은 workflows run에 사용될 이름입니다. 이렇게 표시됩니다. on은 언제 github action을 작동시킬지를 정합니다. 여기서는 push와 pull request에 작동을 하는데, 그 목표가 main 일 때입니다. jobs는 현재 action flow에서 실행될 모든 작업들의 집합입니다. jobs 아래에 이름을 추가할 수도 있습니다. build_apk로 지어줬습니다. runs-on은 실행할 장비를 선택합니다. 저는 ubuntu 최신 버전을 사용합니다. steps에는 이제 실행될 작업들을 나눠서 적어줍니다. 각각의 내용들은 독립된 스크립트로 실행됩니다. uses는 github action이 repository의 code(코드)에 접근할 수 있게 해줍니다. 실행되면 이렇게 보입니다. 이것은 예제 코드이고, 여기서 이제 진짜 build(빌드)를 하도록 만들어봅시다. Android instrumentation

Android Version catalog

이미지
사용 버전: Android Studio Jellyfish 2023.3.1 안드로이드 Version catalog를 알아보겠습니다. Version catalog는 Multi module(멀티 모듈)에서 동일한 라이브러리로 관리하고 사용할 때 필요합니다. 현재는 app module뿐인 상태이지만, modularization(모듈화)을 적용할 계획이기 때문에 적용해 봅시다. settings.gardle.kts에 코드를 적어서 사용하는 방법과 libs.versions.toml 파일을 만들어서 사용하는 방법 두 가지가 있습니다. 여기서는 libs.versions.toml 파일을 만들어서 사용하는 방법을 알아보겠습니다. 생성부터 합시다. Project - gradle - New - Version Catalog를 눌러줍니다. libs로 만듭니다. libs.versions.toml 3가지 부분이 자동으로 만들어지네요. [versions], [libraries], [plugins]가 있습니다. versions에는 version의 정보를 적어줍니다. libraries에는 library를 적어주고, plugins에는 plugin을 적어줍니다. build.gradle.kts에 있는 것들을 libs.versions.toml로 옮겨줍니다. 기존의 것을 변경합니다. libs.versions.toml 이렇게 변경됩니다. app - build.gradle.kts 기존의 것을 변경합니다. 이렇게 변경됩니다. dependencies에 있는 것들은 대부분 library로 취급됩니다. 다행히 여기 있는 것들은 자동 완성을 지원해 주네요. libs.versions.toml 이렇게 module을 정의할 수도 있고, group과 name으로 나눠서 정의할 수도 있습니다. 짜잔. 완성입니다. 참고 프로젝트:  https://github.com/Jaehwa-Noh/Project-Flight-Search-App/tree/compose-flight-search-app 끝. 카테고리: Android

Android Compose Spotless

이미지
사용 언어: Kotlin 1.9.22 사용 버전: Android Studio Iguana 2023.2.1 Patch 1 안드로이드 컴포즈 Spotless를 알아보겠습니다. Spotless는 여러 명의 개발자가 작업할 때, Code(코드) convention(규칙)을 정하여 지키도록 할 때 사용합니다. 공식 레포지토리입니다. https://github.com/diffplug/spotless 여러 언어를 지원합니다. 사용법을 봅시다! https://github.com/diffplug/spotless/blob/main/plugin-gradle/README.md#quickstart Project 용 build.gradle에 id("com.diffplug.spotless") version "6.25.0"를 추가해 줍니다. Sync now를 눌러줍니다. App 용 build.gradle로 갑니다. plugins에 id("com.diffplug.spotless")를 적어줍니다. Sync now 후, 아래에 spotless를 적어줍니다. 아래 plugin 관련 문서가 있습니다. https://github.com/diffplug/spotless/tree/main/plugin-gradle 문서에서 Kotlin은 ktfmt, ktlint, diktat, prettier를 지원해 줍니다. 우리는 pinterest에서 만든 ktlint를 사용할 겁니다. https://github.com/pinterest/ktlint Quick start에 있는 것을 따라 해 봅시다. 우리의 app 용 build.gradle을 이렇게 만들어 줍니다. Sync now를 눌러주세요. 그 후, 몇몇 설정을 위해서  EditorConfig File을 만듭니다. Project를 선택하고, 우클릭 - New - EditorConfig File을 누릅니다. OK를 눌러줍니다. .editorconfig에 이렇게 적어줍니다. Terminal을 열어서 .\gradl

Android Accessibility: Semantics

이미지
안드로이드 Accessibility: Semantics를 알아보겠습니다. 출처: https://developer.android.com/jetpack/compose/semantics Composition(컴포지션)은 앱의 UI(유아이)를 설명하고 composables(컴포져블)를 실행하여 UI를 만듭니다. Composition은 tree(트리) 구조이고, UI를 설명하는 요소로 구성되어 있습니다. Composition 옆에는 비슷한 병렬구조의 Semantics(의미) tree가 있습니다. 이 tree는 UI를 Accessibility(접근성) 서비스와 테스트 framework(프레임워크)에 다른 방식으로 설명합니다. Accessibility 서비스는 tree를 이용하여 특별한 요구사항으로 사용자에게 설명합니다. 테스트 framework는 앱과 상호작용하며 assertions(어썰션)에 이용합니다. Semantics tree는 UI를 어떻게 그려야 하는지에 대한 정보를 포함하고 있지 않습니다. 대신 당신의 composables의 semantic meaning(의미)을 가집니다. 만약 당신의 앱이 composables로 구성되어 있고, Compose(컴포즈) 기초와 material library를 사용하여 변경을 시키게 된다면, Semantics tree는 자동으로 채워져서 생성될 것입니다. 그러나, 당신이 custom(사용자가 수정한) 한 low-level(낮은 수준)의 composables를 추가한다면, 당신은 수동으로 semantics를 추가해야 합니다. 이러한 상황에서는 당신의 tree는 올바르지 않거나, 화면의 전체 의미를 대변할 뿐입니다. 이경우 당신은 tree를 변경할 수 있습니다. 아래의 custom된 달력 예시를 보시죠. 이 예시에서 전체 달력은 low-level composable로 사용되었습니다. layout(레이아웃) composable을 사용하여 직접적으로 Canvas(캔버스)에 그렸습니다. 만약 당신이 아무것도 하지 않는다면, accessi