Intro권한 요청에 대해서 따로 공부해본적 없어 일하는데 조금 부족함을 느꼈다.공식문서를 읽으며 안드로이드 런타임 권한 요청에 대해 공부해보자. 권한 요청 종류먼저 안드로이드의 권한 요청에는 두 가지가 있다. install-time, Runtime 1. Install-time permission앱의 샌드박스 영역을 벗어난 데이터나 작업에 접근할 수 있도록 허용하지만, 사용자의 프라이버시에 제한적인 위험만을 초래하는 데이터(상대적으로 덜 위험한 권한)에 한한다. 예시로 인터넷 권한이 있다. Android 플랫폼은 Linux 사용자 기반 보호 기능을 활용하여 앱 리소스를 식별하고 분리한다. 이러한 방법으로 앱을 서로 분리하고 앱과 시스템을 악성 앱으로부터 보호한다. 이를 위해 Android는 각 And..
Android

Intro목록이 중첩된 복잡한 디자인을 개발해야할 때가 많습니다. - 상품 목록에서 최근 본 상품을 상단에 보여준다.- 상품 중간에 광고를 넣는다.- 판매자의 다른 상품들을 보여준다. 이런 경우 복잡한 화면을 어떻게 구현할지 고민해 봐야합니다.먼저 View System 에서는 어떻게 개발해야하는지 알아봅시다. 2024 Google I/O Extended in Busan 에서 발표한 글을 토대로 정리한 내용입니다. 예시 앱을 만들면서 이해해봅시다. GDG Busan 의 앱을 한 번 만들어 보겠습니다. 아래와 같이 디자인하였습니다. 이 화면은 다음과 같은 순서로 구성되어있습니다. - 최 상단 배너- 운영진 목록 (Organizers)- 이벤트 목록 (Past Events) 이제 Android View Sy..
페스타고 인기 축제 목록의 중첩된 페이지를 어떻게 개발했는지 공유하려고 합니다. 디자인은 다음과 같습니다. 이는 크게 두 가지로 나누어 생각해볼 수 있습니다. 앞으로 이 부분을 ForegroundPager, BackgroundPager 라고 칭하겠습니다. 1. ForegroundPager : 화면 앞 부분에서 페이지를 넘길 수 있고 이전, 이후 아이템을 미리보기 가능2. BackgroundPager : 앞 페이지가 선택되면 변경되는 배경 부분 Foreground 부분은 ViewPager, Background 부분은 ImageView 를 사용하면 되겠다 생각했습니다. ForegroundPager 페이지 형태의 화면을 구성해야 할 때 다음과 같은 보기가 있습니다. Android View : ViewPag..
페스타고가 출시되었습니다!어느 대학 축제에 어떤 아티스트가 오는지,어떤 아티스트가 어느 대학 축제에 가는지,궁금하다면...지금 바로 페스타고! [Android]https://play.google.com/store/apps/details?id=com.festago.festago 페스타고 - 대학 축제, 가수, 공연, 아이돌 - Google Play 앱전국 대학 축제 검색 플랫폼 페스타고, 대학 축제를 더욱 즐겁게!play.google.com [iOS]24.05.15 coming soon.. 오늘은 페스타고 개발 중 개발 서버와 연동하고 생긴 문제를 어떻게 개선하였는지 전달하고자 합니다. 평화롭게 개발하던 중.. FakeRepository 에서 DefaultRepository 로 의존성을 변경해주었는데....
들어가기 전에 안드로이드에서 DataStore 를 사용할 때 암호화, 복호화를 어떻게 처리해야할지 고민이라 찾다가 이 영상을 먼저 보는게 좋다고 하길래 정리해봅니다. FULL Guide to Encryption & Decryption in Android (Keystore, Ciphers and more) https://www.youtube.com/watch?v=aaSck7jBDbw Encryption & Decryption with KeyStore 예를 들어서 비밀번호를 매번 기억해서 입력하기 힘드니깐 자동 저장한다고 생각해봅시다. 그럼 핸드폰에 접근해서 누군가 비밀번호를 볼 수도 있겠죠..? 그 경우를 방지해서 중요한 정보를 저장할 때 Key 를 사용해 저장합니다. 데이터를 읽거나 쓸 때 Key 가 있..
시작하기 전에 현재 페스타고 앱은 토큰 관리를 EncryptedSharedPreferences 로 하고 있다. 그러나 공식 문서는 SharedPreferences 를 DataStore 로 이전할 것을 권장한다. 이전하기 전에 DataStore 가 무엇인지 공부해보자! 이 글은 안드로이드 공식 문서를 바탕으로 작성되었습니다. https://developer.android.com/topic/libraries/architecture/datastore?hl=ko https://developer.android.com/codelabs/android-preferences-datastore?hl=ko DataStore 란? DataStore 는 Protocol Buffer 를 사용해 Key - value 쌍 또는 유형..
Handling Scrolls with CoordinatorLayout 글을 보고 적용했습니다. https://guides.codepath.com/android/handling-scrolls-with-coordinatorlayout CoordinatorLayout 이란? CoorinatorLayout 은 구글의 Material Design scrolling effect 를 다루는 능력을 향상시켜준다. 커스텀 애니메이션 코드를 작성하지 않고도 많은 방법을 제공한다. - Snakbar 가 생길 때 Floating Action Button 이 올라갔다 내려갔다 하게 만들 수 있다. - 메인 컨텐츠를 위해 Toobar 나 header space 를 확장하거나 축소할 수도 있다. - 확장 혹은 축소시키고 뷰의 비..
그동안 당연하게 써 온 Repository 패턴인데 이론적으로 잘못 이해하고 있었다. 추상화해서 갈아끼우기 좋은 구조로 만들고 계층간 분리하는 것까지 Repository 패턴인 줄 알았는데 아니었다. 따라서 오늘은 안드로이드 공식문서에서 말하는 Repository 패턴에 대해서 확실히 알고 넘어가자. Repository 저장소 패턴은 데이터 레이어를 앱의 나머지 부분에서 분리하는 디자인 패턴 이다. 데이터 레이어는 UI 와는 별도로 앱의 데이터와 비즈니스 로직을 처리하는 부분이다. Repository 는 앱의 나머지 layer 에서 이 데이터에 액세스할 수 있도록 일관된 API를 노출한다. 데이터 레이어에는 네트워킹 코드, Room 데이터베이스, 오류 처리, 데이터를 읽거나 조작하는 코드 등이 포함. 즉..
테스트, 아키텍처, 다 중요하지만 간과하는 부분이 있었다. 안드로이드 개발자라면 요구사항에 맞는 View 를 마음껏 그려내고 지연을 줄여 최적화 할 수 있어야한다. 오늘은 뷰가 그려지는 과정에 대해 이해해보자. View Lifecycle https://proandroiddev.com/the-life-cycle-of-a-view-in-android-6a2c4665b95e https://medium.com/android-deep-dive-study/introduce-android-ui-rendering-principle-and-view-optimization-1-f593820c7a50 Custom View 를 만들다보면 View Lifecycle 를 마주할 때가 있다. View Lifecycle 에 대해 알..
Festago 를 개발하면서 ViewModel 의 UiState 및 Event 를 감지하기 위해 LiveData 를 사용했다. 이상적으로 ViewModel 은 Android 를 알아선 안된다. 테스트 가능성, 메모리 누수 안전성, 모듈성을 향상시킨다. 참고: AndroidDevelopers 블로그 https://medium.com/androiddevelopers/viewmodels-and-livedata-patterns-antipatterns-21efaef74a54 이를 이유로 안드로이드 의존성을 갖는 LiveData 를 사용하던 기존 코드들을 Kotlin 의존성을 갖는 Flow 로 Migration 해보기로 했다. StateFlow 와 SharedFlow 에 대한 이론적인 글은 다음 글을 참고해주세요...