Apple is Apple
[Gradle] toml이란?
Android 2024. 7. 4. 17:18

안드로이드 프로젝트를 생성하면 앱 수준의 build.gradle에 dependencies 블럭에 프로젝트에 사용할 라이브러리를 선언한다. 프로젝트 단위에서 특별하게 라이브러리를 관리할 정책이 없다면 dependencies 한 블럭에 라이브러리를 모두 써내려나간다.  이는 관리되는 라이브러리의 수가 많아짐에 따라 중복되는 버전을 일일이 하드코딩할 수도 있고(휴먼에러), 이로인해 어느 한 쪽의 버전이 달라지게되면서 빌드 오류나 예기치못한 버그를 일으킬 수 있다. 이를 해결하는 방법으로 buildSrc나 gradle 분리등으로 해결할 수 있는데, 최신 안드로이드 스튜디오 버전(최신 Gradle)에서 프로젝트 생성시 자동으로 적용되는 toml 방식에 대해 알아보고자한다. TOMLTOML(Tom's Obvious..

[Android] Compose - SwipeToDismiss
Android 2024. 6. 3. 22:22

XML에서 사용하던 RecyclerView의 ItemTouchHelper를 Compose에서 구현한 것이다.RecyclerView의 각 아이템을 스크롤 할 수 있도록하는 Compose API이다. 기존의 사용 방식이다 내일배움캠프 7기 Android TIL 37일차 (2023.09.05)일일 회고 우선 내가 맡아서 할 기능들은 얼추 된 것 같다. 이제 합쳐보면서 잘돌아가는 지 확인해보고 데이터 전달을 진행하면 될 것 같다. 내일 병원예약이 있어 빠르게 진행을 해보았다. 내일aaapple.tistory.com Compose Api에서는 SwipeToDismiss라는 컴포저블을 통해 구현 할 수 있다.Compose에서 RecyclerView와 같은 동작을 하는 LazyColumn안에서 SwipeToDismi..

article thumbnail
[Android] Clean Architecture
Android 2024. 3. 11. 21:17

소프트웨어 아키텍처 소프트웨어 시스템을 추론하기 위해 필요한 구조들의 모임이며, 그러한 시스템과 구조를 만드는데 필요한 규율이다. 소프트웨어 시스템 클래스 함수.. 인터페이스 함수.. 등등.... 좋은 아키텍처를 만드는법 - 함수, 클래스, 컴포넌트 소프트웨어 본연의 목표를 충족 기능적: 원하는 기능을 제공 구조적: 기능의 변화에 따라 유연하게 변경되어 제공 좋은 아키텍처는 소프트웨어의 목표를 최소한의 비용으로 가능하도록 하는 구성요소와 규칙의 모임 (Uncle bob https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html) 중요성 현대 소프트웨어는 지속적으로 변화가 필요함 (요구사항의 증대... 변경사항....) 변경이 ..

article thumbnail
[Android] Compose (RE)
Android 2024. 3. 4. 22:17

Compose Jetpack Compose is Android’s recommended modern toolkit for building native UI. It simplifies and accelerates UI development on Android. Quickly bring your app to life with less code, powerful tools, and intuitive Kotlin APIs. from Android Document 컴포즈는 안드로이드가 추천하는 네이티브 UI 작성을 위한 모던 툴킷이다. 컴포즈는 안드로이드의 UI 개발을 빠르고 간단하게 해줍니다. 어서 앱에 적용해서 적어진 코드, 강력한 도구들, 직관적인 API를 누려 보자.. (구글 문서 발췌) 컴포즈는 무엇이고..

[Android] Dagger (basic)
Android 2024. 1. 29. 22:46

DI (Dependency Injection) DI(dependency injection)는 프로그래밍에 널리 사용되는 기술이며 Android 개발에 매우 ​​적합하다. DI 원칙을 따르면 좋은 앱 아키텍처의 토대를 마련할 수 있다. 종속성 주입을 구현하면 다음과 같은 이점이 있다. 코드 재사용성 리팩토링이 용이 테스트 용이성 먼저, 앱 수준 gradle에 플러그인을 추가 plugins { id 'com.android.application' id 'kotlin-android' // dagger를 위한 plugin id 'kotlin-android-extensions' // 어노테이션을 통해 컴파일 타임에 코드 생성을 도와줌 id 'kotlin-kapt' } 그 후, dagger 라이브러리를 추가 depe..

[Android] Compose (basic)
Android 2024. 1. 15. 16:15

Jetpack Compose UI 개발을 간소화하고 간편하게 할 수 있도록 도와주는 툴킷. 기존의 UI는 명령형 방식이었지만, Compose는 선언형 방식. UI가 어떻게 보일지에 대한 구현에서 무엇을 보여주면 되는지에 대한 구현으로 변경. 뷰의 상태만 선언하여 구현 부분은 프레임워크에게 맡기는 방식. (알아서 만들어 줌) 데이터가 변경되면 프레임 워크가 알아서 해당 함수들을 재호출(리컴포지션)하여 View를 업데이트. 적은 코드, 유지보수, 재사용 및 확장성 용이. 기존에는 xml에 직접 그리고 Activity에서 findViewById, ViewBinding, DataBinding을 통해 컴포넌트에 접근 했지만, Compose는 Kotlin을 통해 직접 UI를 다룰 수 있음 xml 대신 setCont..

[Android] Compose - layout error
Android/Trouble Shooting 2023. 12. 29. 17:17

Compose 레이아웃 관련 에러 LazyHorizontalGrid를 사용하면서 java.lang.IllegalArgumentException: LazyHorizontalGrid's height should be bound by parent. 에러를 발견하였다. 에러내용은 해당 컴포즈 UI가 부모 레이아웃에 높이에 맞지 않다는 내용이였다. 이 에러가 발생하게 된 계기가 Column(modifier.verticalScroll(rememberScrollState()) // 이 부분) { // Spacer를 통해 공백 생성 Spacer(Modifier.height(16.dp)) // 검색 창 SearchBar(Modifier.padding(horizontal = 16.dp)) // 첫번째 섹션 HomeSect..

[Android] 인앱 업데이트
Android 2023. 11. 24. 09:22

인앱 업데이트 표시 플레이스토어 출시 후, 앱 버전을 올리게 되면 사용자는 앱을 업데이트해야 원활한 앱 사용이 가능하다. 하지만 기본적으로는 앱내에서 업데이트를 알려주지 않기 때문에, 플레이스토어에서 직접 확인하지 않는 한 업데이트 내역을 알아차리긴 힘들다. 여기서 구글의 인앱 업데이트를 전송할 수 있도록 하는 라이브러리가 있다. AppUpdateManager이다. 이걸 활용하면 간단하게 앱 내에서 업데이트를 확인하고 그에 따라 알림을 띄워 볼 수 있다. // update check (app - build.gradle) implementation 'com.google.android.play:app-update-ktx:2.1.0' // 앱 시작 시 앱 버전을 체크함 (activity or fragment)..

article thumbnail
[Android] GPS 상태 확인
Android/Trouble Shooting 2023. 11. 23. 13:51

GPS 상태 확인 원인 기기의 GPS가 꺼져 있을 떄, 위치 권한을 획득하여 좌표를 구할 떄 null 값이 발생해 앱이 꺼지는 현상이 있었다. GPS가 켜져 있지 않은데, 좌표를 가져오려다 보니 생기는 현상이였다. 해결 과정 해결하기 위해 위치 권한을 가져오기 전에 GPS 상태를 확인 할 필요가 있었다. 그래서 먼저, GPS 가 켜져있는지 확인하는 변수를 두었다. 그리고 앱을 시작할 때 checkGPSStatus라는 메소드를 만들어 GPS 상태를 확인했다. GPS 상태는 LocationManager의 isProviderEnabled(LocationManager.GPS_PROVIDER)를 통해 확인 할 수 있었다. isGpsOn 변수를 이용하여 위치를 가져오기 전 isGpsOn 값을 확인한다. 만약 GPS..

[Android] 앱 출시 후 카카오 맵이 보이지 않는 현상
Android/Trouble Shooting 2023. 11. 22. 14:07

원인 앱을 플레이스토어에 게시하고 직접 다운로드를 받아 확인하던 중, 카카오맵이 뜨지 않는 현상을 발견하였다. 구글 플레이 개발자 콘솔에서 Google play app signing 기능을 활성화 시켰다면 구글 플레이에 앱이 릴리즈되기 전에 개발자의 로컬 개발 환경에서 릴리즈 키스토어의 시그너쳐가 삭제되고 구글 서버에 저장되어 있는 사이닝키의 시그너쳐로 교체된다. 그렇기 때문에 이 사이닝키로 생성한 키해시 또한 등록해줘야 되는 것이 원인이였다. (구글 키로 사용한 이유는 내 개인 키스토어는 잃어버리거나, 비밀번호를 까먹거나 하는 휴먼 에러때문에 서버에 저장되는 구글 키를 사용) 해결 과정 구글 플레이 콘솔에 있는 SHA-1키를 가져와서 카카오 키 해시로 등록을 해주었더니 해결 되었다. 카카오 키해시는 b..