안드로이드 프로그래밍 시 액티비티(Activity) 간에 객체를 전달하는 방법을 정리.들어가며...안드로이드 프로그래밍을 하다 보면 액티비티 간에 데이터를 전달해야 하는 경우가 종종 있다. 이때 데이터가 원시 타입의 변수들이라면 별다른 추가 조치 없이 쉽게 처리할 수 있지만 참조 타입의 객체라면 조금 손을 봐야 한다. 직렬화된 객체만 Bundle에 추가할 수 있기 때문이다.Trindex 앱에서도 액티비티 간 객체를 전달하는 부분이 있다. 그것을 예시로 액티비티 간 객체 데이터 전달 방법을 정리해 본다.액티비티 전환 전 송신 데이터 준비Trindex 앱을 시작하면 가장 먼저 스플래시 액티비티가 시작되며 로고를 1~2초간 보여준다. 이때의 시간을 낭비하지 않기 위해 백그라운드에서 앱에 사용되는 기초 데이터 ..
안드로이드 14에서 Play Core 라이브러리 작동 호환성을 확보하기 위한 마이그레이션 방법.들어가며...지난주, 구글 플레이 팀으로부터 한 통의 메일을 받았다.현재 Trindex 앱에서 사용 중인 Play Core 1.10.3 라이브러리가 안드로이드 14(API level 34)에서는 더 이상 호환되지 않을 모양이다. 8월 31까지 새로운 버전으로 업데이트한 뒤 제출하라고 한다.Play Core? 어디에 쓰는 물건인고?일단 Play Core 라이브러리가 어떤 기능을 하는 애인지, 또, 왜 사용하게 된 건지 정확히 기억나지 않았다. 그래서 denpendencies의 implementation 문을 주석 처리하고, Sync 및 빌드 시도를 해 보았다.그러자 위와 같이 빌드 오류가 발생하면서...Play ..
일부 안드로이드 기기에서 기기를 돌려도 화면 회전이 나타나지 않는 문제를 해결하는 과정과 그 방법을 정리.기기 방향에 따라 화면이 회전하지 않는 증상일부 안드로이드 기기에서 기기를 이리저리 돌려봐도 Trindex 앱 화면이 회전하지 않는 문제를 발견했다. 정상 동작이 확인된 기기는 갤럭시 S24 플러스, 플립 5, 노트 9이었고, 문제가 확인된 기기는 갤럭시 A34와 안드로이드 스튜디오의 가상 기기들이었다.문제 해결하기까지의 시행착오문제의 원인이 정확하게 파악된 상태라면 굳이 시행착오 과정을 글로 남기지 않고, 원인과 해결 방법만으로 내용을 채웠을 것이다. 하지만 현재 문제는 해결했지만 원인은 여전히 불분명하기에 향후 유사한 문제가 발생할 경우를 대비해서 시행착오 과정도 남긴다.먼저 git으로 롤백 및 ..
안드로이드 스튜디오 AVD에서 특별한 이유 없이 나타나는 ANR 문제를 해결하는 방법.안드로이드 ANR 문제 발생지난주, Trindex 앱 업데이트 준비하면서 여느 때와 같이 안드로이드 스튜디오의 AVD를 켰고, 앱을 구동해 보았다. 그러자 이전까지 이상 없이 동작하던 앱이 갑작스럽게 먹통이 되는 모습을 보였다. 앱 부팅까지는 정상 동작하는 것처럼 보였는데, 이후 반응이 전혀 없었다.이때 사용자 입력을 받게 되면 몇 초가 흐른 뒤 아래와 비슷한 ANR 메시지가 뜨면서 앱에서 튕겨나갔다. 전일 마지막으로 테스트를 했을 때에는 아무런 문제가 없었고, 이후 프로젝트에 변경된 내용도 전혀 없었기에 조금 황당한 현상이었다.ANR 오류는 Application Not Respoding으로 사용자의 입력에도 불구하고 ..
MPAndroidChart 라이브러리의 Legend(범례) 관련 코드를 개선하여 Y축 위치에 맞게 범례 아이콘을 표시하는 방법MPAndroidChart 3.1.0 라이브러리의 LegendMPAndroidChart 3.1.0 라이브러리에서는 차트의 범례 모양을 통해 해당 데이터가 좌측 Y축 데이터인지, 아니면 우측 Y축 데이터인지를 알 수 없기 때문에 Legend 레이블명 설정 시 해당 내용이 포함되도록 주의해서 사용해야 한다. Trindex 앱 역시 위 스샷에서와 같이 레이블 이름에 ◀(좌측 Y축) 표시나 ▶(우측 Y축) 표시를 추가해 주도록 처리했는데, 스마트폰 세로 모드 범례 표시의 경우 문자 한 자의 공간도 아쉽기 때문에 이 부분을 개선해 보기로 했다.MPAndroidChart를 라이브러리 자체를 ..
Deprecated된 안드로이드 메소드, setHasOptionsMenu(), onCreateOptionsMenu(), 그리고 onOptionsItemsSelected()를 대체하여 툴바 옵션 메뉴를 초기화하는 새로운 방법을 정리Deprecated 코드 발견Trindex 안드로이드 앱의 차기 업데이트를 준비하면서 AppCompat을 최신 안정화 버전인 1.7.0으로 적용해 주었다. 그러자 툴바 옵션 메뉴와 관련된 다음 메소드 3개가 deprecated 되는 것을 확인할 수 있었다.관련 내용을 확인해 보니 androidx.fragment에서는 이미 1.5.0-alpha05 버전부터 deprecated 되었던 내용이다. 그게 벌써 2022년 상반기의 일인데, AppCompat에는 이제서야 적용이 된 듯하다...
안드로이드 스튜디오의 가상머신(AVD)에서 화면을 캡처하는 방법을 정리해 보았다. 안드로이드 스튜디오 가상머신(AVD) 안드로이드 가상머신(AVD, Android Virtual Device)은 안드로이드 스튜디오를 통한 안드로이드 앱 개발 시 실제 기기를 대신해 앱 설치 및 테스트를 할 수 있도록 도와주는 유용한 툴이다. 실제 기기의 동작을 가능한 한 최대로 구현해주고 있으며, 스크린샷을 찍는 간단한 기능은 기본적으로 제공된다. 크게 두 가지 방법이 있는데, 자주 사용하는 기능이 아니다 보니 매번 까먹게 되어 정리해 보았다. AVD 화면 캡처 방법 1 가장 기본적인 방법으로는 [Running Devices] 창 상단에 있는 카메라 아이콘 메뉴를 이용하는 방법이다. 메뉴가 눈에 바로 띄고 직관적으로 사용할..
Trindex 앱의 0.37.2 업데이트에서 차트의 X축 눈금 간격을 월 단위나 년 단위로 표시되도록 개선했다. 당시 MPAndroidChart 오픈 소스 라이브러리 자체를 뜯어고치는 작업을 진행했었는데, 해당 내용을 정리해 보았다. MPAndroidChart가 주는 아쉬움 MPAndroidChart는 안드로이드 프로젝트에서 차트를 손쉽게 구현할 수 있도록 해주는 오픈 소스 라이브러리다. 가장 오래되고 널리 쓰이는 오픈 소스지만 2019년 이후로 버전 업데이트가 없고, 아직 기능적으로도 아쉬운 부분이 있는 라이브러리인데, 내가 가장 아쉽게 생각하는 부분은 X축을 날짜 기준으로 두었을 때 눈금의 간격을 인간 친화적으로 설정할 수 없다는 것이다. 바로 위와 같은 경우다. MPAndroidChart가 사용된 ..
안드로이드 스튜디오의 코드 편집기에서 표시되는 usages 등의 힌트들에 대해 표시 여부를 설정하는 방법을 정리해 보았다. 안드로이드 스튜디오의 코드 비전(Code Vision) 표시 안드로이드 스튜디오는 IDE로서 개발자의 편의를 위해 많은 기능들을 제공하고 있다. 그중 하나가 바로 소스코드 편집기의 코드 비전(Code Vision) 표시 기능이다. 이는 인레이 힌트(Inlay Hints) 기능 중 일부인데, 사용(usages), 상속자(inheritors), 관련된 문제(related problem), 코드 작성자 (code author)가 각 인스턴스, 메소드, 클래스 등에 표시되어 한눈에 그 상태를 파악할 수 있게 해주는 편의 기능이다. 안드로이드 스튜디오를 처음 설치하게 되면 해당 항목이 모두 ..
안드로이드 앱 출시 전 릴리즈 버전으로 빌드하여 테스트를 진행하는 방법과 첫 릴리즈 빌드에서 자주 발생하는 프로가드 오류의 해결 방법을 정리해 보았다. 안드로이드 릴리즈 빌드 테스트의 필요성 안드로이드 앱 개발 막바지에 접어들면 출시 전 릴리즈 빌드 된 버전으로 최종 테스트를 진행해 보아야 한다. 디버그 버전에서는 발생하지 않았던 문제가 릴리즈 버전에서 발생할 수 있기 때문이다. 대부분이 앱 축소, 난독화, 최적화 옵션을 적용하면서 발생하는 오류인데, build.gradle (Module :app) 파일의 release 블록 내 빌드 옵션 설정을 모두 false로 변경하면 간단히 해결할 수 있는 문제이지만 그것은 오류를 발생시키는 옵션을 포기하는 것일 뿐, 제대로 된 해결책이 아니다. 이 문제를 제대로 ..