분류 전체보기 114

안드로이드 11 대응(Target SDK 30) - Scoped storage

2020년 11월 1일 부로 안드로이드 Target SDK 레벨이 29 이상이어야만 업데이트가 가능합니다. 이로 인해서 Target SDK 를 올리는 작업을 하기로 결정하게 되었고, 이왕 작업하는 거 Target SDK를 30으로 올리자고 의사결정했습니다. Target SDK 30 으로 올리기 위해 작업한 내용들을 공유하고자 합니다. Scoped Storage 적용, Custom Toast 를 시스템 Toast로 전환, 백그라운드 서비스 권한 부여 및 처리 등을 진행했습니다. 이번 시간에는 Scoped Storage 를 적용한 것을 공유합니다. 과거 상태 회사에서 개발하고 있는 앱에서 접근 하고 있는 파일들의 구조를 간략하게 설명해보면 아래와 같습니다. 외부 저장공간(Environment.getExter..

Fragment에서 호출한 Activity의 결과 받기(onActivityResult 호출 원리)

Fragment 에서 activity 호출 후 호출된 Activity 종료 시 작업 결과 DATA 를 리턴받고 싶을 때가 있습니다. 이 때 아래와 같이 하면 리턴을 받을 수 있습니다. 1. Fragment를 포함하는 Activity 에 FragmentActivity 를 상속 2. Fragment 에 onActivityResult 를 오버라이딩하여 구현 3. Fragment 에 startActivityForResult() 메소드를 호출 4. Fragment 에 의해 실행된 Activity 에서 setReslut 후에 finish 5. Fragment 의 onActvityResult 가 실행됨. 일단, onActivityResult 는 Fragment 를 포함하고 있는 Activity 부터 먼저 호출됩니다...

[자바지기님 강의] 무엇이 시니어 개발자인가?

최근 NextStep 캠프의 DDD 세레나데 교육을 듣고 있었습니다. 마지막 시간에 자바지기님 강의가 있었는데, 함께 공유하면 좋을 것 같아서 기록한 내용을 공유합니다. 제가 여러분이 읽기 좋게 편집할 시간이 없어, 강의를 들으면서 기록한 거의 날것으로 공유하오니 양해부탁드립니다. 시니어 개발자라면 어떤 능력을 가져야 할까? 10년 ~ 20년 정도의 경력이 되면 기술적인 수준은 비슷할 것이다. 시니어 개발자가 될 수록 개발을 위한 문화를 만들 수 있어야 한다. 그렇다면 시니어의 경쟁력은 무엇인가?? 성장과 조직의 문화 리딩 역량은 한 순간에 쌓이지 않는다. 기술적인 사항을 주변 개발자에게 공유, 문제의 현상을 적극적으로 개선, 경력이 적더라도 조금씩 노력해야한다. 아래의 생각전환이 필요하다. 프로그램 역..

org.apache.commons.io 라이브러리에서 java.lang.NoSuchMethodError 에러 해결

몇 달 전부터 APP.을 실행시키거나 사진이 들어간 페이지를 작성하면 죽는다는 VOC를 접수했습니다. 사용자는 삼성 노트 4에 안드로이드 6 버전을 사용하고 있었습니다. 최근 10월 말 릴리즈를 하면서 테스트할 때는 이상이 없었기에 안드로이드 API 호환성 문제로 의심하고, 애뮬레이터를 해당버전에 맞게 세팅하고 재현에 들어갔습니다. 그러자, 이미지를 TEMP 디렉토리에 복사 또는 제거하는 부분에서 Crash가 되었습니다. 로그 중에 특별한 내용은 아래와 같았습니다. java.lang.NoSuchMethodError: No virtual method toPath()Ljava/nio/file/Path; in class Ljava/io/File; or its super classes (declaration o..

2019 GDG DevFest Suwon 참석 후기

제가 서울로 이직한 이유 중 하나가 개발 관련 좋은 교육, 세미나, 커뮤니티 참여 때문이었습니다. 하지만 이직하고, 3개월이 지났지만 대구에 있는 아내와 두 딸 때문에 금요일과 주말에는 참석이 어려운 관계로 여러 교육이나 세미나를 생각보다 많이 참석하지 못해서 아쉬워하고 있던 찰나 GDG DevFest 수원은 평일 저녁에 하는 것을 보고 냉큼 신청하고 오늘 다녀왔습니다. 최근 슬럼프가 온 건지 일에 집중력이 떨어지고, 개인적으로 개발 공부나 사이드 프로젝트을 진행도 손놓고 있었는데, 가서 발표하시는 분들의 이야기를 듣고, 함께 참여한 분들을 보며 다시 열심히 해봐야지 라는 생각을 가졌습니다. 그리고, 일과 관련된 것이 아닌 딴짓이라 불릴 수 있는 개인사이드프로젝트나 개발 등을 한 경험을 나누는 주제로 진..

[리뷰-책] 나는 LINE 개발자입니다.

나는 LINE 개발자입니다 강윤신, 김영환, 김재석, 김정엽, 김택주 저 외 7명 글로벌 테크 기업 LINE의 개발 고수 12인의 개발 라이프 『나는 LINE 개발자입니다』는 10대 창업자, 게임 마니아, 철학 전공 개발자, 아마존 출신 개발자 등 다양한 경력의 12인이 라인(LINE) 개발자가 되기까지의 이야기, 그리고 라인에서 동료들과 함께 글로벌 개발자로 한 단계 성장하는 과정을 담은 책이다. 본서는 세... 블로그의 수기를 읽듯이 개인의 경험담과 생각을 엮은 책이라서 술술 읽힙니다. 주니어 개발자 및 개발자가 되는 것에 꿈을 가지고 있는 분들이 읽으면 좋을 것 같습니다. 고수 개발자와 좋은 동료 그리고 개발을 잘하기 위해 문화가 있는 LINE이 참 부럽다는 생각이 들었습니다.

Review/책 2019.10.01

android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground() 오류 해결

최근 가로/세로 모드 방향전환이 가능하도록 가로모드 개발을 했습니다. 가로/세로 방향전환 시 최초 실행되는 MainActivity에서 아래와 같은 오류가 간헐적으로 발생했습니다. 2019-10-01 09:23:27.681 ~~~~~~~~~~~~~~~~~~~ /AndroidRuntime: FATAL EXCEPTION: main Process: ~~~~~~~~~~~~~~~~~~~ android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground() at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1791) a..

안드로이드 가로/세로모드 고정하는 방법

최근 회사에서 Tablet 해상도에 가로모드를 지원을 위해서 개발을 진행했었습니다. 가로/세로 모드를 적용하다보면 여러가지 기초 지식들이 햇갈릴 때가 많은데요. 그래서, 저도 다시 공부하고 여러분께도 도움이 되고자 화면전환과 구성변경 관련되서 연재 포스팅 합니다. 아마 이번 포스팅 포함해서 2~3번 정도면 모두 정리 될 것 같네요. 먼저, 오늘은 가로 또는 세로 방향으로만 고정하는 방법에 대해 말씀드릴께요. 1. 가로 또는 세로 방향으로 고정하는 방법 먼저, 안드로이드에서 방향을 고정하기 위한 방법은 두가지가 있습니다. 첫번째는 AndroidManifast.xml 의 을 이용해 가로 또는 세로로 고정시키는 방법입니다. 그리고, screenOrientation 에서 사용할 수 있는 value는 아래 안드로..

구성변경(Configuration)에 따른 엑티비티 재시작

이전 글 : 2019/09/13 - [Tech & Programming/안드로이드 & 모바일] - 안드로이드 가로/세로모드 고정하는 방법 2. 구성변경(Configuration)에 따른 엑티비티 재시작 이 전 포스팅(2019/09/13 - [Tech & Programming/안드로이드 & 모바일] - 안드로이드 가로/세로모드 고정하는 방법) 에서 언급한 것처럼 화면방향, 휴대폰 Locale 등이 변경되어 Activity 를 재시작하면 하나의 인스턴스를 가지고 재사용 하는 것이 아니라, 기존 인스턴스는 onDestroy()까지 실행하고 새 인스턴스가 onCreate() 부터 새로 시작됩니다. 1) 구성 한정자란? 구성(Configuration) 은 Actvity를 비롯한 컴포넌트에서 어떤 리소스를 사용할 ..

[안드로이드] Migrating to the New Places SDK Client (구 버전은 2019.7.29 종료)

회사에서 서비스하는 어플에 Place Autocomplete, Current Place 등을 사용하고 있습니다. 이런 기능들을 제공하던 place-services-places Places SDK 가 2019년 7월 29일 서비스가 종료되었습니다. 그래서, 최근 회사에 새롭게 바뀐 Places SDK 로 교체했습니다. 혹시 아직 교체 안하신 분이 있을까 해서 포스팅합니다. 1. 요약 Google Play Services 버전의 Places SDK(com.google.android.gms:play-services-places)가 2019년 1월 29일부터 deprecated 되고, 2019년 7월 29일부터 서비스가 종료됩니다. 따라서, 새로운 버전의 Places SDK 버전으로 교체해야합니다. 2. 사전 ..