웹뷰를 감싸는 Flutter 앱을 만들면서 여러가지 이슈를 겪었다. 기억에 남는 이슈를 여기에 (두서없이ㅎ) 남겨보겠다. 참고로 나의 상황은 아래와 같다. 크로스 플랫폼으로 앱을 개발해보는 것은 처음이었다. 안드로이드 개발만 했던 나에게는 다른 진영의 개발은 상당히 생소했다. 물론 Xcode도 처음 사용해보았다. 뿐만아니라 iOS 개발 및 배포와 관련된 경험이 모두 처음이었다. Flutter를 다루는 것도 처음이었다 Xcode 빌드 Fail이 될 때 Flutter로 개발하더라도 안드로이드와 iOS는 개별로 빌드를 해야한다. iOS는 Xcode로 빌드를 했는데... 처음부터 잘 될리가 없다. 안드로이드의 clean and build와 같은 방법이 있을 것으로 예상했고 예상대로 그런 방법이 있었다. 빌드 혹..
한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다...만진심이 담겨있습니다. 허위 사실 유포는 😎일절 없음. 안드로이드 개발 서적을 고르는 기준 수많은 개발 서적이 있고, 그 중 베스트셀러도 있기 마련. 그 중에서도 하나를 고를려면 어떤 기준으로 골라야할까. 개발 분야는 짧은 기간에 많은 것들이 바뀐다. 트렌드부터 Deprecated되는 기술까지 여러 형태로 업데이트된다. 그래서 공부를 할 때 최신 정보가 맞는지 중요하다. 물론 기본서라면 기본서의 역할에 맡게 쉽고 충분한 설명이 포함되어야 한다. 그리고 그 기본서가 안드로이드 개발 서적이라면 '최신' 정보가 포함되어 있는지도 중요하다. 왜 그럴까? 위에서 보이는 것처럼 안드로이드는 수많은 API 버전이 존재한다. API 버전이 올라가면서 안드로이..
한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다...만 진심이 담겨있습니다. 허위 사실 유포는 😎일절 없음. 대부분의 안드로이드 개발 서적은 입문서 역할을 하고 있다. 처음 안드로이드 개발을 하는 분들을 위한 서적이란 뜻이다. "오준석의 안드로이드 생존 코딩" 역시 입문서에 가깝다. 그렇다면 입문 레벨이 아닌 분들에게 이 서적은 의미가 없을까? 입문 수준은 아니지만 중급도 아닌 개발자라면 본 서적의 4장부터 학습을 하면 된다. 4장도 코틀린의 기본을 다루지만 왜인지 모르고 사용하는 것이 있을 수 있다. 예를 들면 SAM 변환이 그렇다. (p.112) 편하게 OnClickListener를 사용하고 있지만 추상화되는 과정을 모르고 쓰는 경우가 많다. button.setOnClickListener(o..
하나의 자료형을 다른 자료형으로 바꾸는 작업을 우리는 캐스팅이라고 한다. 우리나라말로는 형변환이라고도 한다. 기본적이지만 조금씩 헷갈려서 외우기 어려운 경우가 있다. 내가 그렇다. 맞다. 핑계다. 신경써서 외우질 않으니... 외우지 않는다면 정리라도 잘해보자. 이번에 다룰 주제는 String에서 Date로, 혹은 Date에서 String으로 캐스팅하는 방법이다. ⏰ 1. 서버로부터 들어온 date 정보를 살펴보기 이번에 작업할 대상은 아래와 같이 날짜 정보가 주어졌다. "createdAt":"2021-03-29T08:57:57.000Z" 듣도 보도 못한 양식이지만 우리 선배님들께서 이런 양식도 포매팅을 하는 방법을 블로그에 많이 올려주셨다. DateTimeFormatter를 이용해서 포매팅을 해주자. i..
⚠️ 경고 ⚠️ 본 카테고리, Dev Memo는 필자가 깊게 다루기는 귀찮지만 궁금한 것들을 체험해보고 간단하게 기록을 남기는 공간입니다. 디버깅 노트, 써드파티 라이브러리 사용기, 버전 업데이트, 어이없는 실수, 오탈자 발견 등 각종 시덥지 않은 내용이 들어 갈 수 있다는 점 참고바랍니다. (우헤헿) 새로운 PC(드디어 맥북 M1😘)를 받고 안드로이드 스튜디오를 설치한 후 코드를 빌드하는데 다음과 같은 에러가 나타났다. 확인해보니 반드시 안드로이드 네이티브에서만 나타나는 것은 아니고 리액트 네이티브에서도 볼 수 있는 에러였다. License for package Android SDK Build-Tools 30.0.2 not accepted. M1에서 나타나는 이슈인가해서 살짝 긴장을 했는데, 다행히 그..
최근에 Koin을 다시 공부하면서 샘플 코드에 RecyclerView를 사용했었다. 그 때 DataBinding도 사용했는데 "DataBinding과 RecyclerView를 모두 사용할 것이면 BindingAdapter도 사용하는게 더 낫지 않을까?"라는 생각을 했었다. (물론 RecyclerView와 BindingAdapter는 직접적으로 관계는 없다.) 그래서... BindingAdapter 두둥 등장!!! (아래 샘플 코드는 필자의 github를 참고바란다.) 🤔 BindingAdapter ? BindingAdapter는 속성값을 설정하거나 이벤트리스너를 설정하는 것처럼 View(xml 레이아웃)의 attribute를 정의하고 로직을 작성하는데 사용된다. Android의 기본 UI들은 대부분 이미..
⚠️ 경고 ⚠️ 본 카테고리, Dev Memo는 필자가 깊게 다루기는 귀찮지만 궁금한 것들을 체험해보고 간단하게 기록을 남기는 공간입니다. 디버깅 노트, 써드파티 라이브러리 사용기, 버전 업데이트, 어이없는 실수, 오탈자 발견 등 각종 시덥지 않은 내용이 들어 갈 수 있다는 점 참고바랍니다. (우헤헿) 우연히 "Logger로 안드로이드 로그향상하기"라는 글을 보았다. 개발자라면 무수한 로그를 보는데 조금이라도 깨끗한 + 정리된 + 예쁜 로그를 볼수록 정신건강에 좋다. 그래서 따라해보았다. // build.gradle (app) // OkHttp implementation "com.squareup.okhttp3:okhttp:$okhttpVersion" implementation "com.squareup.o..
예를 들어보자. Daum 이미지 검색 API를 안드로이드 내부에서 사용한다면... 카카오 개발 계정이 필요할 것이고 앱키를 얻기 위해 애플리케이션을 등록하고 등록된 애플리케이션으로부터 REST API 키를 얻고 "Daum 검색" 개발 가이드에서 이미지 검색 API 정보를 얻으면 된다. 여기서 3번의 REST API를 안드로이드 코드 내부에 들고 있어야 한다면 어딘가에 저장을 할 것이다. 이 저장하는 과정에서 섬세하게 다루지 않는다면 비밀번호처럼 드러나면 안되는 API Key값을 Github 등에서 누구나 접근가능하게 되버려 곤란한 상황을 겪게될 수 있다. (오우 소름) 그렇다면 숨겨야 할 값을 안보이게 하는 방법으로 무엇이 있을까? local.properties에 Key값 숨기기 local.propert..
남들이 비웃는게 무서워서 책으로도 안배우면 누가 저한테 알려줍니까? 그럼 사람들이 알려줄때까지 기다릴까요? 일년 뒤에도 야구 모르는게 그게 진짜 창피한거 아닙니까? - SBS 드라마, 스토브리그 3화, 백승수의 대사 (남궁민 배우분) 드라마의 대사가 개발서적을 사도록, 읽도록 만들었다. "개발은 책으로 배우는게 아니야."라는 말을 어디서 주워들어서 그냥 부딪치고 코드를 짜고 고민만 했던 과정을 겪었다. 하지만 책이든 사람이든 동영상이든 좋은 컨텐츠라면 스스로를 성장시키는데 촉매제 역할을 한다. 너무 늦게 알았지만 백승수의 대사처럼 이 이상으로 창피하기 전에 공부할 수 있다는 점에서 행운이라고 생각하기로 했다. 안드로이드를 이해하려면 안드로이드 서적만 보는게 능사는 아니었다. 그래서 코틀린, 리액티브 프로..
본 글에서는 RxJava 혹은 RxKotlin의 기본 지식이 필요하다. 그리고 만약 이전 글이 궁금하다면 아래 링크를 접속해보자. Kotest로 해보는 안드로이드 테스트 (상) 테스트 코드를 만들어 본 적은 있지만 안드로이드 프로젝트 내에 테스트 코드를 적용해 본 적이 없었다. 그래서 TDD같은 단어는 그림의 떡. 남들이 말하는 유닛 테스트는 "우와 멋있는 말"이라고 devvkkid.tistory.com 앞에서 Kotest를 사용하기 위한 준비를 마쳤다. 이제 사용을 해 볼것이다. 이미 만들어진 프로젝트가 있다. (해당 링크는 필자의 Github repository이다.) 이 프로젝트에는 REST API 형태로 통신하는 모듈이 들어있다. 이 API를 테스트해 볼 것이다. 1. 테스트 클래스 생성 먼저 t..
Comment