Gradle 빌드 시 특정 태스크 건너뛰기

태스크를 건너뛰게 된 배경 위 캡쳐된 이미지를 보면 총 빌드시간에서 특정 태스크(RealmAccessorsTransformer) 가 상당한 부분을 차지하는 것을 확인할 수 있다. 왜 그런지 구글링을 해봤더니 프로젝트를 AGP 8.0로 업데이트 한 이후에 Realm(모바일용 DB)에 포함된 Gradle 플러그인이 새로운 Transformer API 상에서 증분빌드를 지원하지 않아 프로젝트 코드 전체를 새로 빌드하다보니 시간이 많이 소요되는 더보기…

이미지 메타데이터 지오태깅(Geotagging) 제거하기

이미지 내에 포함되어 있는 Exif 데이터는 조리개, 셔터속도, 초점 거리, 측광방식, ISO 설정 그리고 출력시 도움을 줄 수 있는 색상 정보등이 들어있다. 이와 더불어 카메라의 모델명, 등록번호, 위치 정보 등 다른 정보도 포함되어 있다. 지오태깅은 웹사이트, 비디오, QR 코드, 이미지 등 다양한 미디어에서 지리적 식별 메타데이터를 추가하는 프로세스를 일컫는다. 이 더보기…

이미지 Exif(메타-데이터) 수정하기

Exif 란? Exif(Exchangeable Image File format)는 스캐너, 스마트폰, 디지털 카메라 등에서 기록된 이미지(또는 오디오) 파일을 다룰 때 태그를 보조적으로 사용하는 표준 포맷이다. 위 이미지에 나타나는 ‘출처‘, ‘규격‘, ‘기기 제조사‘, ‘위도‘, ‘경도‘ 등이 일반적으로 Exif형식의 내용이며, 이 메타데이터들은 이미지 파일 자체에 내장되어 있다. ExifInterface 안드로이드에서 ExifInterface는 다양한 이미지 파일 형식의 Exif 더보기…

파일 시그니처로 파일 포맷 확인하기

간혹 파일 포맷을 먼저 확인하고, 그에 맞게 처리해야 할 때가 있다. 예를 들어, 이미지 포맷들 중 JPEG와 GIF를 구분하여 다르게 처리해야하는 경우, JPEG는 정적인 단일 이미지로 렌더링 하고 GIF는 이미지 스트림을 지원하므로 소위 말하는 움짤(Animated GIF)로 구현해야 하는 경우가 있다. 그렇다면 파일 포맷이 JPEG 또는 GIF인지 어떻게 확인하면 좋을까? 가장 더보기…

계측 테스트에서 리소스 불러오기

계측 테스트 코드 작성시 외부에서 리소스(파일)을 불러와야 하는 경우가 있다. 다음의 절차를 따라 리소스를 불러 올 수 있다. 1. 리소스 디렉토리 파일 추가하기 계측 테스트를 수행하고자 하는 모듈 하위에 다음과 같이 resources 디렉토리를 추가한다. 추가한 디렉토리에 원하는 리소스를 추가한다. 이 포스팅의 경우 test.jpg 파일을 추가 했다고 가정한다. 2. 리소스 경로를 더보기…

Android MVI 라이브러리 Orbit-MVI

이전 포스팅 Android 프로젝트에 MVI 도입하기 를 먼저 읽는 것을 권장합니다. Orbit 개요 Orbit은 안드로이드 뿐만 멀티플랫폼을 지원하는 Redux/MVI 같은 라이브러리 이며, 쉽고 가벼운 것이 특징이다. 자세한 내용은 아래의 링크에서 참조하자 orbit-mvi github 저장소 공식 페이지 orbit을 프로젝트에 추가하기 위해 build.gradle에 다음 의존성을 추가 할 수 있다.(최신버전 확인) Orbit은 다음과 더보기…

Android 프로젝트에 MVI 도입하기

MVI 도입배경 프로젝트에 Jetpack Compose를 도입하고 1년정도 적극 쓰면서 ‘상태’ 관리의 중요성을 머리가 아닌 몸으로 느껴버렸다. 상태 관리를 어떻게 하면 좋을까 고민하던 중 동료 개발자가 이전에 나에게 말해줬던 MVI가 떠올랐다.  “MVI 는 상태를 쉽게 관리해준다구 blah blah…” Compose 도입 이전에는 그땐 상태 관리를 크게 중요하게 생각하지 않았다. 아니 어쩌면 관리가 더보기…

Navigation-safeargs 가 Directions 클래스를 생성하지 않는다?

안드로이드 스튜디오에서 ~Directions 클래스를 참조할 수 없다고 나오는데 빌드는 제대로 완료 되는 경우가 있다. 이 경우 Directions가 생성되지 않은 것이 아니라 참조가 되지 않는 것이다. 실제로 build/generated/source/navigation-args 경로에 가보면 Directions 클래스들이 존재하는 것을 확인할 수 있다. 즉, 컴파일 타임에 Directions가 제대로 생성되었지만 참조가 불가능한 경우이기 때문에 간단히 build.gradle에 다음의 내용을 더보기…

글쓴이 Charlezz,

디지털 카메라 센서 이해하기

디지털 카메라와 이미지 센서 DSLR(Digital Single-Lens Reflex)은 디지털 일안 반사식 카메라를 의미하며, 미러리스는 내부의 미러 및 펜타프리즘을 제거하여 크기와 무게를 줄인 카메라를 의미한다. 이 두 카메라 모두 렌즈를 통해 빛을 받고 이미지 센서를 통해 기록된다. 이미지 센서의 종류  이미지 센서의 종류는 크게 CCD와 CMOS로 나뉜다. CCD와 CMOS의 차이점을 잘 더보기…

macOS의 애플리케이션에 하드웨어 접근 권한 부여하기

Big Sur+VSCode 환경에서 OpenCV의 VideoCapture 클래스를 사용하여 카메라에 접근하려고 하는데 권한이 없다고 나온다. 권한을 부여하기 위해 System Preferences > Security & Privacy > Privacy > Camera 탭 을 열어서 애플리케이션 목록을 확인해도 VS Code는 Camera 관련 앱이 아니기 때문에 목록에 나오지 않는 듯 하다. macOS에서 애플리케이션의 권한목록은 데이터베이스로 관리 되고 더보기…