본문 바로가기

MOBILE/project 회고

Android Studio로 기분 통계 일기 앱 만들기

1. TODAY WRITE

안드로이드 버전으로 만든 기분을 종합하여 비율별로 통계를 내는 일기 앱.
내가 쓸려고 만들었지만 생각해보니 나는 ios 유저라서 못쓰게 되었고 공기계에서만 쓰는 슬픈 사실
날씨와 위치정보를 받아와서 자동으로 기록해주고 요일 별 기분과 비율을 통계 도표를 사용해서 시각적으로 제시함
총 2주 정도 걸린 것 같은데 깃헙 commit이랑 push 가 귀찮아서 안했더니 처음이자 마지막 commit&push 가 되었다

Tools

  • Android Studio API 30
  • Weather API xml parsing
  • GPS location
  • SQLiteDatabase
  • 그림판 (무려 직접 디자인...)

 

2. Screenshots


3. APP DESIGN

디자이너를 못구해서 결국 직접 해야하는 상황이었다
근데 나는 일러스트로 못쓰고 아니 사실 디자인 프로그램을 하나도 써본적이 없었다 그림판만 빼고
결국 일단 그림판으로 해보자 해서 진짜 마우스로 그림

처음에는 진짜 그림판으로 대충 그렸는데 좀 괜찮다고 생각했음 왠지 감각있다랄까?
하지만 주변 지인들에게 돌아온 반응이 싸늘해서 다시 그림판으로 그렸다 나는 이게 최선이다
근데 사실 그렇게 이상하다고 느끼지 않는다

에셋 파일에 넣고 보니 왠지 균형이 안맞는거 같기도 했는데 그냥 넘어가기로 했다


4. DEVELOPMENT ISSUES


이번 프로젝트만큼 디버깅을 한적이 없었다 알고리즘 할때도 이정도는 아니었다 xml 레이아웃 파일 조그만 것들 고치기라도 하면 굳이 다시 AVD 돌려서 확인해봐야하고 심지어 노트북으로 하다보니까 로딩에만 오랜시간이 걸려서 답답했다
그리고 가장 문제는 날씨 api xml parsing 이었다 파싱 자체는 문제가 없었음 근데 이 작업을 AsyncTask로 비동기 처리를 했더니 꼬이는 부분이 생긴것이다
게다가 몇 작업을 비동기로 처리했음에도 불구하고 계속 메인스레드에서 너무 많은 작업을 처리하고 있다고 해서 이를 해결하려고 며칠을 썼다 그 와중에 또 비동기 스레드 진입할 때  intermittent한 원인 모를 강제 종료까지….
마지막까지 몇몇 오류를 해결한다고 고생 좀 했다
이번 프로젝트에서 알아낸 사실 중요한 몇가지를 쓰자면

 


1. 비동기처리는 중요하다

- 안드로이드 프로그래밍의 철학과도 같은 메인 스레드의 과부하를 막아야 함. 동기 방식은 작업의 완료를 기다렸다 시작하지만 비동기는 작업의 완료를 기다리지 않고 sub thread와 main thread가 동시에 진행함

 

2. FragmentManager

- 새로 객체를 생성하지 않고 그냥 기존의 객체로 fragment replace commit를 하면 기존 객체의 데이터를 그대로 유지함 당연함 근데 이걸 못봐서 며칠을 고생했다


3. RecyclerView의 Adapter 클래스는 getItemCount()를 포함한 3개의 메서드 오버라이딩 필수

- 이것도 getItemCount 메서드에 items.size 해야되는데 까먹고 안했더니 리싸이클러뷰에 아이템 뷰가 안떠서 이걸 찾는다고 또 시간을 썼다


4. Keystore 비번은 그냥 키마다 다르게 하지 말고 통일하자

- 내가 비번을 잘못친 줄 모르고 자바 암호화 복호화 자료까지 찾아보는 일이 있었다 진짜 말 그대로 산으로 간거지


5. 구글 개발자 문서를 꼭 제발 참고하자

- 아무 생각없이 이렇겠지 싶어서 친 코드는 꼭 문제가 된다

5. HOW TO USE  


https://github.com/josushell/TODAY_WRITE

깃허브에 소스코드와 signed release apk 파일을 올려뒀다

https://github.com/josushell/TODAY_WRITE/tree/master/app/release

 

GitHub - josushell/TODAY_WRITE: 내가 쓸려고 만들었는데 만들고 보니 나는 ios 유저였다

내가 쓸려고 만들었는데 만들고 보니 나는 ios 유저였다. Contribute to josushell/TODAY_WRITE development by creating an account on GitHub.

github.com

 

6. RETROSPECT

내 노트북이 안드로이드 스튜디오 때문에 블루스크린 수집가가 되었는데 역시 노트북으로 AVD 돌리는 것은 쉽지가 않다 사실 코드 자체는 오래 걸리지 않았음 특히 통계 부분은 안드로이드 프로그래밍 책에 제공되는 오픈소스를 활용했기 때문 근데 디버깅이 프로젝트 기간을 늘리는 원인이 되었다 이래서 실무가 힘든거다;; 분명 소프트웨어 공학 때 배웠는데…
안드로이드 스튜디오는 겨울에 난로 없을 때 딱 쓰기 좋다... ios 버전으로도 만들어야지 이 프로젝트로 확고해진 생각은 꼭 맥을 사야겠다는 것이다 메모리 업그레이드까지 해서