Android

    [Android] Retrofit에서 XML 데이터 통신 및 파싱 방법 / RecyclerView XML 데이터 받아오기

    들어가기 전 현재 'ITda' 라는 이주 노동자들을 위한 서비스를 개발하고 있다. 나는 현재 뉴스페이지를 개발하고 있고 이 뉴스는 문화체육관광부의 정책뉴스 공공 API를 활용하기로 했다. 하지만 해당 API는 Json이 아닌 XML 형태로만 데이터를 보내주기 때문에 기존에 사용하던 JSON 파싱이 아닌 XML 데이터를 Retrofit에서 파싱해야했다. 따라서 이번 포스팅에서는 XML 데이터를 파싱해 전달받는 방법을 소개하고자 한다. 모든 예시는 아래 API와 함께한다. https://www.data.go.kr/data/15095335/openapi.do 문화체육관광부_정책브리핑_정책뉴스_API 문화체육관광부_정책브리핑_정책뉴스는 대한민국 정부의 중요한 정책뉴스, 카드뉴스, 인포그래픽, 사실은이렇습니다 등..

    [Android/트러블슈팅] 구글 플레이스토어 키스토어 분실 재설정 방법

    들어가기 전 엄빠도어렸다 업데이트를 위해 bundle을 추출하는 과정에서 키스토어가 분실된 사실을 알게되었다. 파일을 정리하면서 지워버린 것이다.. jks 파일이 없으면 bundle 추출이 불가능하기 때문에 이를 재설정해야했다. 따라서 이번에 플레이스토어에 올린 앱의 키스토어를 재설정하는 방법을 포스팅 하고자한다. 1. 새로운 keystore 생성 안드로이드 스튜디오에서 Build > Generate Signed Bundle or APK 로 들어가 apk 또는 bundle을 선택한다. [사진 1]과 같이 뜬다면 Create new ... 를 누른다. Key Store path : 새로운 키스토어와 jks 파일이 저장되는 위치이다. Password : 새롭게 지정 할 키스토어의 비밀번호를 설정하면 된다. ..

    [Android] Flow란? LiveData와 Flow 비교

    Flow? Android 에서 Coroutine의 Flow는 데이터 스트림이며, 코루틴 상에서 리액티브 프로그래밍을 지원하기 위한 구성요소이다. Flow는 코루틴을 기반으로 여러 값을 제공할 수 있다. 비동기식으로 계산할 수 있는 데이터 스트림의 개념이다. 따라서 반환 값은 동일한 유형이어야 한다. ex) Flow는 정수 값을 내보내는 흐름이다. Flow는 suspend함수를 사용하여 값을 비동기적으로 생성하고 사용한다. 예를 들어 Flow는 Default 스레드를 차단하지 않고 다음 값을 생성할 네트워크 요청을 안전하게 만들 수 있다. 코루틴에서 비동기적으로 호출하기 위한 suspend 함수와 동일하지만 flow에서는 suspend 를 붙일 필요가 없다. 리액티브 프로그래밍이란? == 반응형 프로그래밍..

    [Android] 인앱 업데이트 구현하기 / 인앱 업데이트 테스트

    들어가기 전 엄빠는 어렸다 1.1.0 버전 업데이트 과정에서 사용자에게 업데이트를 권유 할 수 있는 업데이트 팝업을 구현하고자 했다. 따라서 이 포스팅에서 업데이트 팝업을 구현하는 방법을 알아보고자 한다. 업데이트 팝업이란? 어플에 새로운 기능이 추가되거나 버그가 수정되어 업데이트가 필요한 경우가 발생할 수 있다. 이 때 어플을 실행시키면 사용자에게 업데이트가 필요함을 알리는 팝업을 업데이트 팝업이라 한다. 위 사진과 같이 사용자에게 업데이트를 유도할 수 있다. 엄빠도 어렸다 서비스에서는 업데이트 팝업을 구현하기 위해서 인앱 업데이트 방식을 활용하였다. 인앱 업데이트란? 구글은 안드로이드 5.0 이상을 사용하는 기기에 인앱 업데이트 기능을 지원하고 있다. 이는 구글 플레이스토어를 거치지 않고 앱 업데이트..

    [Android/코루틴] 1. 코루틴은 무엇이고 왜 쓰는가?

    들어가기 전 프로젝트를 하면서 suspend 함수를 활용해 서버통신을 하는 코드를 작성한 경험이 있다. 이것이 코루틴이고 비동기 실행을 간단하게 해준다는 것 까지만 알고있었다. 원리 및 장점을 제대로 알고있는 채로 코루틴을 사용하고 싶다는 생각에 코루틴을 공부하면서 배운 내용들을 시리즈로 포스팅하고자 한다. Coroutine = Co + Routine 코루틴을 co(with의 의미) + routine = 루틴의 일종으로 협동루틴이라 할 수 있다. 코루틴은 [그림 1]과 같이 이전에 자신의 실행이 마지막으로 중단되었던 지점 다음의 장소에서 실행을 재개한다. 루틴과 코루틴을 비교하면 [그림 2]와 같다. 루틴이 입구와 출구가 하나라면, 코루틴은 중단과 재개가 계속될 수 있는 즉 입구와 출구가 여러개라고 할 ..

    [Android] 첫 안드로이드 앱 릴리즈 과정에서 겪은 트러블슈팅들

    1. kakao Login API 문제 발생 [Android/트러블슈팅] Keystore 정보 확인하는 법 들어가기 전 릴리즈 apk 를 뽑을 때 keystore를 사용하게되는데, 내 keystore에 별칭을 까먹는 경우가 있었다. 이 때 내 keystore에 정보를 알 수 있는 방법을 알아보자. cmd에 keytool -list -v -keystore 'jks 파일 hyeonlog-developer.tistory.com [Android/트러블슈팅] Kakao Login API Apk 추출 시 로그인 안되는 문제/KeyHash 오류 들어가기 전 '엄빠도 어렸다'라는 서비스를 만들면서 겪은 kakao login api 트러블 슈팅에 대해 포스팅하고자 한다. 문제 설명 우리 팀은 릴리즈를 앞두고 안드로이드 ..

    [Android/트러블슈팅] 앱을 삭제했는데 데이터가 남아있다고요?

    들어가기 전 릴리즈 apk로 테스트를 하다가 처음 앱을 설치하고 실행하면 로그인 및 다른 기능들이 정말 잘 작동되는데, 앱을 삭제했다가 다시 깔아서 테스트를 하면 앱이 터지는 문제가 발생하였다. 이 과정에서 겪은 트러블 슈팅과 해결 방법을 작성해보도록 하겠다. 엄빠도 어렸다 릴리즈를 준비하면서 릴리즈 apk로 테스트를 계속 진행했는데, 첫 설치 후 앱을 실행하면 정말 잘 작동하였다. 문제였던 카카로 로그인도 잘 되고, 여러 기능들에 문제가 없었다. 그러나 앱을 삭제하고 다시 깔아보니 실행과 동시에 앱이 터지는 문제가 발생했다. 무엇이 문제일까? 1. 디버그 apk 에서는 괜찮았으니까, 코드 중에 buildConfig.DEBUG로 설정 한 부분이 있어서, 해당 부분이 릴리즈 apk에서 작동하지 못해서 생긴..

    [Android/트러블슈팅] Keystore 정보 확인하는 법

    들어가기 전 릴리즈 apk 를 뽑을 때 keystore를 사용하게되는데, 내 keystore에 별칭을 까먹는 경우가 있었다. 이 때 내 keystore에 정보를 알 수 있는 방법을 알아보자. cmd에 keytool -list -v -keystore 'jks 파일 경로' 를 입력하고 비밀번호를 입력하면 keystore 정보가 다 나온다. 이 때 경로를 입력하려면 " " 를 지워야지 정보가 나온다. 지우지 않으면 아래와 같은 에러가 뜬다. keytool error: java.lang.Exception: Keystore file does not exist:

    [Android/트러블 슈팅] Multiple Gradle daemons might be spawned because the Gradle JDK and JAVA_HOME locations are different. / 안드로이드 스튜디오 자동완성 에러 안뜨는 오류

    들어가기 전 kakao login api 문제로 키해시를 뽑다가 환경변수를 전부 날리는 실수를 저질렀다. 안드로이드 java home이나 gradle을 담은 환경변수가 날라갔고 그 이후로 안드로이드 스튜디오에 자동완성 및 에러가 안뜨는 문제가 발생하였다. 이를 해결하기 위한 과정과 방법에 대한 내용을 포스팅하고자 한다. Error 내용 Multiple Gradle daemons might be spawned because the Gradle JDK and JAVA_HOME locations are different. 라고 Notification에 떴다. 만약 해당 에러 없이 안드로이드 스튜디오 자동완성과 에러가 안뜬다면 Power Save Mode가 켜져있는지 확인해야한다. power save mode가..

    [Android/트러블슈팅] Kakao Login API Apk 추출 시 로그인 안되는 문제/KeyHash 오류

    들어가기 전 '엄빠도 어렸다'라는 서비스를 만들면서 겪은 kakao login api 트러블 슈팅에 대해 포스팅하고자 한다. 문제 설명 우리 팀은 릴리즈를 앞두고 안드로이드 디버그 apk와 릴리즈 apk를 추출했다. 이 apk 파일을 설치 후 어플에 접속 했을 때 애뮬레이터에서는 잘 돌아가던 kakao login이 안되는 문제가 발생하였다. error description을 보면 401 auth error, 즉 kakao 키해시 등록이 안 된 키해시가 들어왔다는 의미이다. 키해시 확인 error descption을 바탕으로 알맞는 키해시를 찾기 위해 노력했다. https://developers.kakao.com/docs/latest/ko/getting-started/sdk-android#add-key-h..

    [Android] registerForActivityResult로 팝업 Activity를 만들어보자

    들어가기 전 엄빠도 어렸다 서비스를 만들면서 두 사용자가 7일차까지 모두 답변을 마쳤을 때 홈화면 대신 엔딩화면이 팝업처럼 띄워지도록 구현해야했다. registerForActivityResult를 통해서 이 기능을 구현한 과정과 겪은 트러블슈팅을 포스팅해보도록 하겠다. registerForActivityResult 란? 기존의 Activity간의 이동을 할 때 startActivity(intent : Intent )를 통해서 단방향 이동을 하고, 데이터값 전달과 함께 양방향 이동을 위해서는 startActivityForResult(intent:Intent, requestCode:Int) 을 사용했다. 하지만 startActivityForeResult는 콜백 수행의 안정성, 보일러플레이트 코드의 증가 이슈..