Skils/Android

이번 프로젝트를 진행하면서 서버와 안드로이드를 동시에 개발하고 있는데요,사실 안드로이드 개발만 경험해 본 상황에서 가볍게 서버의 코드를 작성하고 있는 상황입니다.과거에 서버 개발자분들에게 무리하게 API를 요구했던 제 자신을 반성하게 되는 것 같습니다. 이번글은 오류 처리에 관한 글인데요,이번 프로젝트를 하면서 api를 처음 연결한 상황에서 에러 처리를 명확하게 짚고 넘어가고 싶어서 초반부에 코드를 굉장히 많이 수정했던 것 같습니다. 우선 제가 고려했던 점은 일괄된 에러처리를 경험해 보자였습니다. 서버개발자와 협업이었다면, 조금 더 수월하게 진행할 수 있었지만, 혼자 했기에 실수할만한 부분을 빠르게 해결했던 것 같습니다. 우선 서버의 응답은 다음과 같습니다. API 성공 시  API 실패 시  성공과 실..
저번 PR에서 흥미로운 리뷰를 받았습니다. 사실 레포지토리 위에 하나의 계층을 두어 DataSource를 적용해 본 적이 없었습니다.상위 계층을 하나 두면 오히려 복잡하지 않을까라는 생각으로 학습을 한 뒤 코드로 적용해 봤습니다. 사실 안드로이드에서 권장하는 DataLayer의 방식은 DataSource -> Respository의 흐름입니다.하지만 굳이? Data Sources까지 만들어야 하는 이유가 뭘까에 대해서 궁금했습니다. 사실 이는 제가 Repository 패턴에 대해서 잘못 해석을 하고 개발을 했던 것 같습니다. Repository는 직접적으로 데이터를 작성하고, 수정하는 형태가 아닌 데이터를 UI layer에 제공하고, UI에서 사용하려는 데이터로 변환하는 mapper 작업을 합니다.Dat..
아래 포스팅과 이어지는 내용입니다. [Android] 자동 로그인 with DataStore(Kotlin)아래 포스팅과 이어지는 내용입니다. [Android] 네이버 간편 로그인(Kotlin)이번 프로젝트에서 네이버 지도 API를 사용하기 때문에 로그인도 네이버 간편 로그인을 사용하기로 했습니다.저는 설정했jja2han.tistory.com 저번 포스팅에서는 DataStore를 이용하면서 자동로그인을 구현해 봤습니다.과정에서 매번 DataStore를 사용하는 곳에서 DataStore를 주입해줘야 하는 상황이 생겼습니다.그 외에도 추후 개발에서 API와 Repository가 많이 생기기 때문에 개발 초반부에 Hilt를 적용하는 것이 생산성에 도움이 될 것이라고 판단하고 적용해 봤습니다. 기존의 코드는 Ap..
아래 포스팅과 이어지는 내용입니다. [Android] 네이버 간편 로그인(Kotlin)이번 프로젝트에서 네이버 지도 API를 사용하기 때문에 로그인도 네이버 간편 로그인을 사용하기로 했습니다.저는 설정했던 과정과 작성했던 코드와 그에 대한 설명을 적어볼까 합니다.앱을 등jja2han.tistory.com어플을 사용하다 보면 어플의 로고가 뜨고 메인화면으로 넘어가는 구조를 보신 적이 있을 것입니다.Android에서는 SplashActivity로 구현합니다.대략적인 구조는 다음과 같습니다.최초 화면 진입점인 Splash Activity에서 자동 로그인을 요청하고, 실패했다면 Login 화면으로, 성공했다면 Main 화면으로 넘어갑니다.자 이제 그럼 궁금증은 자동 로그인을 요청하는 곳은 어디이며, 어떠한 로..
이번 프로젝트에서 네이버 지도 API를 사용하기 때문에 로그인도 네이버 간편 로그인을 사용하기로 했습니다.저는 설정했던 과정과 작성했던 코드와 그에 대한 설명을 적어볼까 합니다.앱을 등록하는 글은 다른 블로그에도 많더라고요. Gradle 설정저는 arr 파일을 다운로드하고 gradle에 추가하는 방법을 선택했습니다.다운로드한 파일을 project 탭으로 전환시켜서 lib 폴더에 복사해 줍니다. 이후 해당 arr 파일을 dependency에 추가해 줍니다.dependencies{ implementation(files("libs/oauth-5.9.1.aar"))} 이후에는 사용하는 라이브러리를 추가해주셔야 합니다.저 같은 경우 안 쓸 거 같은 라이브러리를 제외하다가, gradle 충돌이 많이 발생해서 제공..
Android 개발을 시작한 지 얼마 지나지 않았을 때 BaseActivity, BaseFragment를 생성하고, Activity와 Fragment가 이를 상속받는 코드의 형태를 봤었습니다. 그때 당시는 더 복잡하고, 보는 사람으로 하여금 혼동을 주는 코드라고 생각했지만, BaseActivity와 Fragment를 상속받음으로써 해결되는 다양한 장점들이 있었습니다. 왜? AppCompatActivity, Fragment가 아닌 BaseActivity, BaseFragment를 상속받는 것은 중복된 코드의 발생을 줄일 수 있습니다. 뭐 얼마나 코드의 중복이 발생하길래 복잡한 구조(BaseActivity와 BaseFragment)를 택하는걸까라고 생각하실 수 있습니다. class TestActivity :..
프로젝트에서 Network 연결 상태에 따라 API 동작 및 화면을 갱신해야 했습니다. 여러 가지 방법이 있지만, 저는 공식문서에 나와있는 ConnectivityManager를 통해서 해결했습니다. 네트워크 상태 읽기 | Connectivity | Android Developers 이 페이지는 Cloud Translation API를 통해 번역되었습니다. 네트워크 상태 읽기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android에서는 앱이 연결의 동적 변 developer.android.com 설명하기 전 네트워크 사용을 위해선 안드로이드 매니페스트에 다음 권한을 포함해야 합니다. 해당 권한은 음악, 갤러리 접근과 달리 일반권한이기 때문에 런타임에 요청할 필요가 없습..
프로젝트를 하면서 Ui State와 Ui Event를 통해서 데이터에 대한 변화와 사용자 입력에 대한 변경사항을 UI에서 반영하도록 코드를 작성했습니다. 하지만 기존 코드의 문제점(?)과 제가 UI Layer에 대한 이해도와, Ui State, Ui Event 코드를 잘못이해한 거 같아서 UI layer에 대한 역할과 state, event에 대해서 공부해봤습니다 ㅎ 개인적으로 공부하고 적은 글이라는 점이라서 정확하지 않을 수 있어요 UI Layer 공식문서에서 권장하는 Clean Architecture중 하나의 영역입니다. UI 레이어에 대한 역할은 다음과 같습니다. 화면에 어플리케이션 데이터를 표시하고, 사용자 상호작용의 기본 지점으로의 역할을 수행하는 것 말이 조금은 딱딱한 감이 있는데, 쉽게 말하..
개요 프로젝트에서 코루틴을 많이 사용했지만, 코루틴에 대해서 정확하게 알지 못하고 기존 코드를 그대로 사용한 적이 많았다. 공식문서에서 비동기 작업으로 코루틴을 권장하고, 애플리케이션 특성상 비동기 작업이 중요한 만큼 한번 자세히 다룰 필요성이 있다고 느꼈다. 코루틴에 대해서 설명하기전에 비동기 작업이 왜 중요한지, 어떤 것인지 알고 넘어갈 필요성이 있다. 여기선 동시성과 병렬성이라는 단어의 차이를 알 필요성이 있다. 동시성 vs 병렬성 동시성 둘 이상의 작업이 동시에 실행되는것을 의미한다. 여기서 말하는 동시는 정확하게 같은 시간에 실행되는 것이 아닌 동시에 실행하는 것처럼 보인다는 의미이다. 예를 들어 N명의 사람이 하나의 큰 작업을 하는데, 동시에 작업을 하는것이 아닌 1명씩 돌아가면서 작업을 하는..
재한
'Skils/Android' 카테고리의 글 목록