본문 바로가기

안드로이드/Medium

2년동안 안드로이드 개발이 나에게 알려준 것들

Medium 글을 읽다가, 2년동안 혼자 프로젝트를 맡아서 안드로이드 개발을 하면서 느꼈던 점을 개발자분이 적어 놓은 글을 보았다. 

내가 놓치고 있는 점을 잘 정리해주는 글인 것 같아서 한글로 번역해서 정리해본다.

이  글을 계기로 더 나은 개발자로 나아가고 싶다.

 

  1. 있는 것을 또 개발을 하려고 하지마라!
    • 예를 들어서, Retrofit을 만들 필요는 없다.
  2. 현명하게 라이브러리르 선택해라!
    • 맹목적으로 라이브러리를 사용하지 마라!
    • start의 수를 체크해라!
      • 많은 것이 더 좋은 라이브러리 일 수 있다.
    • 이슈들을 체크해라!
      • open과 closed 둘다
    • 시간이 조금 있다면? 라이브러리의 코드를 살펴봐라!
      • 체크하면서 정말 도움이 될 것이다.
    • [TIP] Command Line으로 바로 라이브러리를 살펴보고 싶다면 Dryrun을 사용해봐라!
  3. 더 많은 코드를 읽어라!
    • 안드로이드는 오픈 소스 플랫폼이다. 코드를 자세히 살펴보고 프레임 워크를 어떻게 구현했는지 확인해라!
    • [TIP] Awesome-Android
      • 가장 많이 사용되는 라이브러리들
    • [TIP] open-source-Android
      • 대부분의 오픈소스 안드로이드 앱들 리스트
  4. 적절한 코딩표준을 유지해라!
  5. 프로가드가 필요하다!
    • 앱 출시를 할 때, 절대로 프로가드를 잊지 마라!
      • 프로가드는 코드를 축소해주고, 난독화하여 복제 및 조작을 어렵게 만든다.
      • [TIP] 프로가드보다 더 강력한 보안을 원한다면
  6. 적합한 아키텍처를 사용해라!
  7. UI를 설명해야한다면, 좋은 UI가 아니다!
  8. Analytics는 너의 가장 친한 친구이다!
    • crash 리포팅과 앱의 사용 트래킹을 할 수 있다.
    • 내가 아무리 잘 만든 앱이어도, 버전마다 다른 crash가 날 수도 있다. crash 리포팅은 그것들을 고칠 수 있게 도와준다.
    • 마케터와 같이 생각해야한다.
    • 유저가 어떤 것을 원하는지 브릿지 역할을 해준다.
    • [TIP] crash reporting tool (Instarbug)
  9. 마케팅 닌자가 되어라!
    • 좋은 제품도 마케팅이 잘되면 성공할 수 없다.
    • 마케팅을 위한 시간과 돈을 투자해라
    • 앱이 그정도로 안정화 되어 있는지 살펴라
    • 경쟁사가 누구고, 어떻게 이길 수 있을지 리서치해라
    • [TIP] 마켓 분석 툴 (sensorFlow)
  10. 앱을 최적화해라!
  • 그냥 만든 코드와 최적화한 코드는 다르다.
    • 빠르게 동작하고, 돈이 적게 들고, 작은 용량의 디바이스 저장소를 사용한다.
  • 메모리 누수를 항상 체크해라
  • 자바의 가비지 컬렉터가 어떻게 동작하는지 이해하는데 시간을 쏟아라
    • 힙 덤프를 만들고, 라이브 객체를 분석해라
  • [TIP] 메모리 누수를 위한 라이브러리 (Leak Canary)
    • 자동화하여 시간을 단축할 수 있다.

11. Gradle 빌드로 매주 5시간 이상 절약하기

12. 테스트를 해라!

  • 테스트 보다 더 중요한 것은 없다.
  • 가능한한 철저하게 테스트해라!
  • 자동화된 테스트 케이스를 작성하는데 시간을 할애하라
    • 다양한 상황을 만들고 앱이 살아 남는지 확인해라
  • 저자는 앱을 출시하고, 사용자에게 버그를 직면하게 하고 그 피드백을 수정했다.
    • 절대로 그렇게 하지마라!!!!
    • 절대 서두르지마라, 장기적으로 생각해라

13. Android Fragmentation

  • 서로 다른 스크린 사이즈를 가진 다양한 디바이스가 존재한다.
  • 또, 다양한 장치 제조업체와 하드웨어 사양, 그리고 사용자에 따라 OS도 다르다.
    • 갤럭시 S에서 SharedPreferences API 사용이 문제가된다. (버그 리포트)
  • 버전이 다르고, 사양이 다르고, OEM이 다른 다양한 디바이스에서 테스트해봐야한다.

14. Git 사용을 시작해라!

15. 해커를 어렵게 만들어라!

  • 모바일은 보안 공격에 취약하다.
    • decompiled
    • reverse-engineered
    • ripped open
    • 분석, 조작 등
  • 로컬에 API 키를 안전하게 저장하는 방법을 알야야한다.
  • 민감한 데이트를 다룬다면, 암호화하는 방법, 알고리즘 또한 선택해야한다.
  • 암호키를 서버나 로컬에 안전하게 저장해야한다.
  • Android Debug Bridge를 이용해서 데이터를 백업하는 것을 막아야한다. 민감한 데이터를 사용한다면 난독화도 고려해야한다.
  • 앱을 보호 할 수 있는 몇가지 방법들

16. 저가형 디바이스에서 개발해라!

  • 고사양 디바이스에서는 나의 앱 결함을 숨겨준다.
  • 많은 앱으로 가득찬 디바이스에서 개발해라

17. 디자인 패턴 공부에 투자해라!

  • 자바 디자인패턴
    • 알려진 모든 디자인 패턴들이 모여있다.
  • singleton, adapter, factory method, iterator, dependency injection, event driven architecture, builder, callback, strategy, facade and producer consumer와 같은 가장 중요한 것부터 공부해라!
  • GoF의 디자인 패턴, Martin Flowler의 Refactoring, Joshua Bloch의 Effective Java를 읽는 것을 추천한다.

18. 안드로이드 커뮤니티를 활성화시키자!

  • 많은 코드와 많은 블로그, 많은 지식들을 공유하므로써 많은 도움을 받고있다.
  • 이것을 나 또한 돌려주는 것이다.
    • 많은 시간이 걸릴지 모르지만, 항상 감사한 마음으로 또 다른 사람들을 위해서 커뮤니티를 활성화 시키고 도움을 주는 것이다.

느낀점

꼼꼼하게 체크해야할 사항들이 많은데, 체크 사항을 많이 패스하면서 개발을 했던 것 같다.

좀 더 섬세한 개발자가 되어야겠다.라는 생각을 하게 되었다. 많이 사용하는 구글링, 깃허브, 오픈소스들을 무턱대고 사용하고 있었는데

좀 더 좋은 프로젝트를 위해서 신중하게 선택해야겠다고 생각했다.

그리고 항상 왜?라는 질문을 나한테 던지는 자세도 중요한 것 같고 나 또한 저자처럼 좋은 라이브러리나 지식 공유를 해서 다른 사람들에게 도움을 줄 수 있는 안드로이드 개발자가 되고 싶다.

 

What 2 Years of Android Development Have Taught Me the Hard Way