macOS vs Windows 빌드 시간 테스트

테스트 목적 동일한 기기의 동일한 개발환경에서 macOS와 Windows의 빌드시간의 차이를 알아본다. 테스트 환경 테스트 기기 : 13인치 Macbook 2015 중급형 테스트 OS : macOS Mojave, Windows10 (부트캠프환경) 빌드 환경 : 안드로이드 스튜디오 버전 3.5.3, SDK Platform 29, build-tools 29.0.2 빌드 대상 프로젝트 : FinalArchitecture/JavaApp 테스트 빌드 시간 측정은 프로젝트 클린 더보기…

멀티 모듈을 사용하는 앱에서 Dagger 적용하기

멀티 모듈을 사용하는 앱에서 Dagger 적용하기 애플리케이션 개발시 다음과 같은 특수한 목적으로 가지고 멀티 모듈을 사용한 개발 방법을 택할 수 있다. 대규모 프로젝트에서의 개발자간 협업 빌드 시간 단축 모듈의 재사용 여러가지 버전의 앱을 만들 때 APK 용량을 줄일 때 ( Dynamic Feature Module) 안드로이드 프로젝트에서 멀티 모듈의 종류는 일반적인 모듈과 더보기…

이미지의 추가/삭제 변경사항을 감지하고 삭제된 Uri인지 확인하기

내 앱이 아닌 다른 애플리케이션에서 미디어(이미지, 동영상 또는 파일)을 추가/삭제 여부를 감지하기 위해서는 ContentObserver를 다음과 확장하여 사용할 수 있다. class PickleContentObserver(val activity:FragmentActivity) : ContentObserver(Handler()), LifecycleObserver{ … val contentChangedEvent = SingleLiveEvent<Void>() // Activity 또는 Fragment에서 구독 init { activity.lifecycle.addObserver(this) activity.contentResolver.registerContentObserver(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, true, this) activity.contentResolver.registerContentObserver(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, true, this) } override fun onChange(selfChange: Boolean, uri: 더보기…

찰스의 안드로이드 1차 오프라인 모임 후기

드디어 첫 번째 오프라인 모임을 가졌습니다. 주말에 바쁜시간내어 와주신 모든 분들께 감사하다는 말씀 드리고 싶습니다. 이번 오프라인 모임은 안드로이드 개발자로써 2019년 한 해를 돌아보고, 2020년을 준비하기 위한 모임이였습니다. 작년 한 해 아쉬웠던 점과 잘했던 점을 정리 한 결과 대부분 몇가지 공통된 의견을 도출할 수 있었습니다. 안드로이드 기술 배우기 ( Kotlin, 더보기…

글쓴이 Charlezz,

코틀린의 Sealed class

https://android.jlelse.eu/kotlin-sealed-classes-enum-2-0-1d8addd00602를 번역한 내용입니다. 예를들어 일요일, 월요일, 화요일 등 요일에 대한 정보를 갖는 객체 집합을 만들기 위해 enum클래스를 사용할 수 있다.  enum class Days(dayNo: Int) { SUNDAY(0), MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6) } 왜 sealed class가 필요할까 라는 생각이 들텐데 그전에 enum의 제약사항에 대해 알아보자 각각의 enum 상수에 대해 하나의 더보기…

여러 작업에 대해 단일 쓰레드를 사용하여 순차적으로 하나씩 진행하기

블루투스, 카메라, 마이크 등 단일 하드웨어에 의존적인 API사용에 대해서는 일반적으로 한번에 한가지 작업 밖에 할 수 없다. 예를 들어 동영상을 인코딩 하는 인코더 모듈이 존재하고, 이 인코더는 한번에 하나의 파일만 인코딩 할 수 있는 상황이라면 여러 동영상 인코딩 작업 목록을 순차적으로 하나씩 처리해야 할 것이다. [그림] 여러 요청들을 한번에 하나씩 더보기…

DataBindingComponent와 Dagger2와 함께 사용하기

DataBindingComponent와 Dagger2와 함께 사용하기 이번에 다룰 내용은 DatabindingComponent 사용하기 2탄으로 DataBindingComponent를 의존성 주입 프레임워크인 Dagger2와 함께 사용하는 방법에 대해서 알아본다. Prerequisite 데이터바인딩 라이브러리 DatabindingComponent 사용하기 Dagger2를 알아보자 DataBindingComponent /w Dagger2 DataBindingComponent 공식 문서를 참조하면, 다음과 같은 내용이 있다. If using Dagger 2, the developer should extend this interface and annotate 더보기…

Alfred의 Workflow을 이용한 ADB 활용

Alfred의 Workflow을 이용한 ADB 활용 Alfred는 MacOS의 생산성을 높여주는 유용한 유틸리티이다. Alfred는 일부기능이 무료지만, 파워팩을 구매하면 Workflow라는 강력한 기능을 사용할 수 있다. 매번 번거롭게 ADB 커맨드를 터미널에 타이핑 하고 있는 자신을 발견하고는 Workflow와 연동하면 되겠구나 싶었다.  처음에는 https://github.com/zjn0505/adb-alfred를 참고해보니, 유용한 기능들이 많아서 이를 그냥 사용할까 했지만, 내가 기대했던것보다 UX 뎁스가 더보기…

JVM, DVM, ART 이해하기

안드로이드를 처음 막 배우기 시작한 꼬꼬마시절 왜 구글이 왜 자바를 선택했고, 자바의 바이트코드가 무엇이며, 왜 폰에서 Dalvik과 ART를 선택하라는 거지??? 궁금했지만 누구하나 시원하게 알려주지 않았던 기억이 있어, 오늘은 안드로이드가 실행되는 환경의 내부를 좀 알아보고자 한다. JVM(Java Virtual Machine) JVM은 자바 바이트 코드를 실행할 수 있는 주체이다. 자바 바이트 코드는 플랫폼에 더보기…

렌더링 되는 View의 내부를 살펴보자

렌더링 되는 View의 내부를 살펴보자 더 나은 이해를 위해 이전 포스팅인 안드로이드 View가 렌더링 되는 과정을 먼저 참조할 수 있다. 렌더링하는 동안 사용되는 컴포넌트, 디스플레이 파이프 라인 및 UI와 하드웨어간 동기화가 발생하는 방식 등 더 자세한 내용을 파악하기 위해 다음과 같은 내용들을 알아야한다. UI스레드 모든 앱은 UI 스레드에서 View를 그리게 더보기…