분류 전체보기

· Kotlin/Basic
2023 4월 13일 구글이 Android의 새로운 빌드 언어로 Kotlin DSL을 채택 구글이 채택한 Kotlin DSL이 무엇인지, 어떤 장점이 있는지 알아본다. Kotlin DSL Kotlin으로 작성된 도메인 특화 언어(DSL)로 Gradle, Android 등 여러 영역에서 사용되며 정적 타입 검사, 람다 함수, 확장 함수 등과 같은 Kotlin 언어의 장점을 살려 직관적인 DSL을 구축 가능하게 한다. Kotlin DSL 채택 이유 꼭 Kotlin DSL을 사용해야 하는 것은 아니나 다른 DSL의 비해서 특정 도메인이나 작업에 대해 보다 표현력이 뛰어나고 유연한 코드를 작성할 수 있도록 도와주는 도구로 채택된 것으로 본다 Kotlin DSL is Now the Default for New G..
안드로이드에서 단순한 데이터셋을 로컬에 저장하기 위해서 흔히 기본적으로 내장되어 있는 SharedPreferences를 사용한다. 하지만 Primitive data만 저장 가능했으며, 커스텀 데이터 타입 저장을 위해 GSON을 통해 Json String으로 변환하여 저장하는 코드들이 생겨났다. 그리고 미숙한 처리에 종종 Runtime Error, ANR이 날 수도 있다. SharedPreferences 단점 실제 XML 파일 I/O 작업을 하는 것으로 UI Thread에서 작업할 경우 안전하지 않음 Runtime Exception으로부터 안전하지 않음 XML 파일이기에 외부에서 쉽게 파일을 읽을 수 있음 (DataStore도 읽을 수는 있음) 비동기 API를 제공하지만 Listener를 통해서만 값을 R..
JetBrains에서 만들어진 Kotlin을 사용하여 연결된 시스템에서 비동기 서버 및 클라이언트를 구축하기 위한 오픈 소스 프레임 워크 설치, 사용이 간편하여 실행 파이프 라인에 단계를 추가하려는 경우 확장 가능하다. Coroutine의 비동기 속성으로 인해 여러 요청 수신이 가능하고 MultiPlatform이기도 하다. 즉 서버뿐 아니라 Ktor Client를 써서 Android, iOS, JS에서 마이크로서비스를 사용할 수도 있다. Ktor Client를 쓰면 요청 생성, 응답 처리 및 인증, Json 직렬화 등과 같은 기능으로 기능을 확장할 수 있다. Creating a client application | Ktor ktor.io 구현할 Android는 Client이기 때문에 Client만 알아보..
· Develop
협업을 할 때 다른 개발자의 해당 메서드가 무슨 역할을 하는지 모르기 때문에 누군가 작성해 놓은 코드를 디버깅하면서 분석을 하게 된다. 이는 곧 리소스의 낭비이다. 그래서 협업 환경에서 코드 네이밍과 자세한 주석, 이해하기 쉬운 구조는 곧 동료 작업자에 대한 배려이자 실력의 척도가 된다. Architecture Pattern 구조를 만들고 같은 역할을 하는 class를 묶어, 이해하기 쉽게 적응할 수 있도록 하자는 유명 개발자들의 생각으로 소프트웨어 아키텍처는 공식화되었고, 해당 아키텍처를 아는 사람은 조금 더 수월하게 프로젝트를 이해할 수 되었다. 사전적 정의로 아키텍처 패턴은 공통적으로 자주 발생하는 문제를 해결하는 재사용 가능한 해결방법이다. 실제로 아키텍처 패턴은 반복적으로 발견되고 재사용할 수 ..
Room을 사용 중 빌드 창 warning 문구 warning: Schema export directory is not provided to the annotation processor so we cannot export the schema. You can either provide `room.schemaLocation` annotation processor argument OR set exportSchema to false. Room 라이브러리를 사용해서 Database 스키마를 생성할 때 exportSchema 설정에 의해 위의 경고가 뜬다. exportSchema는 Boolean 타입으로 Database Schema를 폴더로 내보낼지 정할 수 있다. default 값이 true로 되어있어 경로를 지..
Android Studio Dolphin 버전에서 새로 나온 LogCat의 필터 쿼리 내 앱에서 발생하는 내용만 보기 (PIDs for the local app project) package:mine 내 앱에서 발생하는 내용에서 필터링 (ex) ViewModel 또는 UiState라는 문자가 포함된 내용만 필터링 package:mine ViewModel | UiState 패키지, 태그, 레벨 조합 package:my-package-ID, tag:my-tag, level:ERROR -를 붙여 특정 태그 제외 -tag:exclude-this-tag 정규 표현식 (~을 키값 뒤에 붙여준다) tag~:regex-tag Logcat https://brownsoo.medium.com/새로운-로그캣-필터-쿼리-a77..
SDK 버전을 높이기 위해 변경된 사항과 수정해야 할 사항들 중 중요하다 판단되는 것들을 알아보고 정리 Performance and battery Foreground Services (FGS) 작업 관리자 Android 13(API 33)에서는 타겟 SDK 버전과 관계없이 사용자가 "알림 창"에서 "포그라운드 서비스"를 중지할 수 있다. FGS 작업 관리자라고 하는 새로운 기능에는 현재 포그라운드 서비스를 실행 중인 앱 목록이 표시된다. 이 목록에는 활성 앱이라는 라벨이 적용되어 있다. 각 앱의 옆에는 중지 버튼이 있다. 아래 그림은 Android 13을 실행하는 기기에서 FGS 작업 관리자 워크플로를 보여준다. JobScheduler를 사용한 작업 미리 가져오기 처리 개선 JobScheduler는 앱이..
어느 순간 잘 뜨던 구글맵이 뜨지 않아 Logcat을 보았다. Authorization failure과 Ensure that the "Google Maps Android API v2" is enabled. 인증키 오류의 Log들이 찍힌 걸 확인 관련 검색을 해보면 Api가 활성화되어있나 확인해 보고 제한사항을 줄 때 패키지 이름을 제대로 주라는 말들이 대부분이다. 하지만 API도 다 활성화되어있고 제한사항의 패키지 이름과 Api 제한사항도 다 맞춰서 해놓았는데도 같은 오류가 반복되었다.. Properties properties = new Properties() properties.load(project.rootProject.file('local.properties').newDataInputStream()..
프로젝트를 진행하다 아래 사진처럼 하단에 존재하면서 스크롤을 하거나 터치할 때 올라오는 뷰가 필요해 BottomSheet를 찾아보았다. Bottom Sheet BottomSheet의 종류로는 Persistent BottomSheet와 Modal BottomSheet 이 있다. Persistent는 특정 화면의 레이아웃에 속해있고, Behavior를 설정해 주면 동작시킬 수 있다. 즉, 특정한 컨텐츠에 속해있는 또 다른 화면. Modal은 안드로이드의 Toast처럼 어디에서나 띄울 수 있다. 프래그먼트(BottomSheetDialogFragment) 이용 Persistent BottomSheet 프로젝트에 사용한 구현 방법으로는 Persistent BottomSheet이다. CoordinatorLayout..
bumjae
'분류 전체보기' 카테고리의 글 목록 (3 Page)