build.gradle에 설정하는 각 버전들의 의미와 현재 안드로이드의 버전별 점유율을 알아보겠습니다. compileSdkVersion compileSdkVersion은 프로젝트가 컴파일 될 때 사용되는 버전입니다. 런타임 동작에는 영향을 주지 않으며, 컴파일 타임에만 영향을 줍니다. minSdkVersion minSdkVersion은 구글 플레이에서 어떤 디바이스까지 다운로드가 가능한지 사용되는 로우바운드라고 생각하면 됩니다. 런타임에 영향을 주며, lint를 통해서 개발자들에게 앱에 미칠 수 있는 영향에 대해서 알려줍니다. targetSdkVersion targetSdkVersion은 어느 버전까지 테스트가 완료되었는지 Android OS에게 알려주는 값입니다. 이곳에서 정의된 수치로 Android ..
안드로이드 개발자를 위한 코드 스타일 가이드라인 1편입니다. 익셉션(exception)을 무시하지 마라 코드를 짜다 보면 때로는 아래의 예처럼 익셉션을 완전히 무시하고 싶어질 때가 있습니다. void setServerPort(String value) { try { serverPort = Integer.parseInt(value); } catch (NumberFormatException e) { } } 이 함수를 호출할 모듈이 명확하고 그 모듈에서 넘겨주는 value 값에 문제가 없을거라는 확신을 가질 수 있습니다. 하지만 절대 이렇게 코드를 짜서는 안됩니다. 여러분의 코드가 절대로 에러를 일으키지 않을 거라고, 또는 발생할 수 있는 에러를 처리하는 것이 중요하지 않다고 생각할 수도 있으나 위처럼 익셉션을..
요즘 Reactive Programming 에 대한 관심이 높습니다. 서버 백엔드부터 Front 클라이언트들까지 많은 곳에서 이야기되고 있습니다. Reactive Programming 은 위키에서는 다음과 같이 정의하고 있습니다. "컴퓨팅으로써 반응형 프로그래밍은 데이터의 흐름과 변화에 대한 전달을 기반으로 하는 프로그래밍 패러다임이다." 끊임없이 요청/변경되는 데이터에 반응하기 위해나온 Reactive Programming 은 데이터를 처리함에 있어서 비동기적으로 데이터를 처리할 때 효율적으로 할 수 있도록 하기 위한 방법입니다. 다음 그림을 보면 좀 더 쉽게 이해할 수 있습니다. 일반적인 동기화 방식의 프로그래밍에서는 메소드 콜이 발생했을 때 데이터 처리가 끝날때까지 쓰레드를 대기시키거나 콜백을 받아..
빠른 빌드를 위한 10가지 팁 1. 최신 안드로이드 그래들 플러그인을 사용합니다. 안드로이드 스튜디오 팀에서는 빌드 속도와 버그수정을 위해 그래들 플러그인을 계속 업데이트 하고 있습니다. 그래들 3.0 부터는 구글 메이븐 저장소를 통해 그래들이 배포됩니다. 따라서 메이븐 구글 저장소를 추가해주고, dependency에 gradle 3.0.0 혹은 그 이후 버전을 추가해줍니다. buildscript { repository { jcenter() maven { url 'https://maven.google.com' } } dependency { classpath 'com.android.tools.build:gradle:3.0.0-alpha1' } } 2. 레거시 멀티덱스를 피하도록 합니다. 멀티덱스 사용 시 ..