전체 글 썸네일형 리스트형 [Android] api와 implementation, 무엇이 다를까? 안드로이드 프로젝트를 진행하며 라이브러리를 추가할 때 implementation을 자연스럽게 많이 사용한 경험이 있으실 것 같은데요,그렇다면 api와 implementation의 차이점을 알고 사용하고 계신가요? 프로젝트를 진행하다보면 `build.gradle` 안에서 `api` 와 `implementation` 을 언제 써야 할지 헷갈릴 때가 있습니다.둘 다 의존성을 추가하는 키워드처럼 보이지만, “노출 범위”가 완전히 다르다는 것 알고 계셨나요!? 🤓 api와 implementation의 차이점먼저, api와 implementation에 대해 한 줄로 요약하자면 `implementation` 은 내부 전용, `api` 는 외부에도 공개되는 의존성입니다.보통 implementation은 아래와 같.. 더보기 [Android] Portrait? Landscape? screenOrientation 이해하기 안드로이드 사이드 프로젝트를 진행하며 반자동적으로 세로모드만 지원을 하며 screenOrientation을 주로 portrait만 사용을 했었는데요, 실무에서 프로젝트를 진행하다보니 가로/세로 모두를 지원해줘야 했습니다. 그러던 도중 엔진이 래핑한 안드로이드 Manifest 파일을 확인하다가 screenOrientation 값이 상수로 되어있는 것을 발견하게 되었습니다. 그래서 다시 안드로이드 스튜디오에서 screenOrientation 코드를 살펴보니 attrs_manifest.xml 파일 안에 상수와 함께 정의된 screenOrientation 값들을 찾을 수 있었습니다.그 과정에서 정의된 screenOrientation 값들이 보며 screenOrientation 설정 값이 이렇게 많았나!? 싶었고.. 더보기 [Android] 안드로이드 스튜디오에서 웹뷰 스크롤 늘려보기 프로젝트를 진행하며 안드로이드 스튜디오에서 웹뷰를 띄우는 작업을 진행하게 되었습니다. 웹뷰에서는 input 칸에 유저의 정보를 입력하는 단계가 진행되었는데요, 프로젝트의 특성 상 상단 바, 네비게이션 영역들을 (inset들) 없애자 웹뷰에서 스크롤이 되지 않는 문제가 발생하였습니다. 웹뷰에서 스크롤이 되지 않으니 유저의 정보를 입력할 때 키보드에 input 칸이 가려져 입력 내용이 보이지 않고 매우 불편한 UX가 되었습니다. 그래서 웹뷰에 강제로 스크롤을 되게 만들어야 했습니다. 그런데..! 단순히 웹뷰에 제가 스크롤 기능을 넣는다고 스크롤이 되는 것이 아니였습니다.그래서 문제점을 찾아 차차 스크롤의 원리부터 다시 이해해 보았습니다. 오늘 포스팅에서 이 과정을 차근 차근 설명해 보겠습니다. 🤔 원.. 더보기 [Android] Crashlytics 전에 StrictMode 최근 strict mode라는 것을 알게 되었는데요,안드로이드에서 제공하는 개발 단계에서 앱의 잘못된 동작 (특히 메인 스레드에서의 과도한 작업이나 자원 누수)을 탐지하고 경고해주는 디버깅 도구라고 합니다. 사실 저 역시 최근에 처음 알게 되었는데, 찾아보니 안드로이드 초창기에 (2010년~2011년쯤?) 많이 사용되던 디버깅 도구라고 하네요.요즘은 워낙 좋은 디버깅 도구가 많이 나와서 저 같은 주니어 개발자들은 접할 기회가 거의 없었던 것 같아요. 비교적 옛날(?) 디버깅 도구임에도 불구하고 StrictMode를 주제로 블로그 글을 쓰기로 한 이유는, 이 도구가 안드로이드 앱 성능 문제가 발생하는 원인과 이를 가장 기본적인 수준에서 탐지하는 방법을 이해하는 데 좋은 출발점이 될 수 있다고 생각했기 때문.. 더보기 [Android] 시스템 UI (Inset) 제어해보기 최근 전체 화면에 UI를 그리는 작업을 진행하며 기본 시스템 UI (status bar, navigation bar 등)들을 없애는 작업을 하게 되었습니다. 평소엔 비교적으로 화면에 그려지는 UI들에 많은 신경을 쏟다가 이 작업을 하며 기본 시스템 UI에 조금 더 관심을 가지게 되었는데요,그러다보니 inset의 개념에 대해 다시 짚고 넘어가야겠다는 생각이 들었습니다. 추가로, 2025년 8월 31일까지 targetSDK를 35로 업데이트 해야 하는데 API 35부터는 edge-to-edge를 강제 적용하게 되면서 시스템 UI에 대한 이해도가 더 높아야 할 것 같다는 생각이 들었습니다. 그렇다면 inset의 개념부터 차근차근 알아볼까요? 🪄 Inset 이란Inset은 앱 콘텐츠와 시스템 UI가 겹치는.. 더보기 [Android] 앱을 사용하지 않으면 권한을 초기화 할게요! 최근 안드로이드 서비스에서 권한과 관련된 문제를 다루다가 자동 권한 초기화를 접하게 되었는데요,유저가 장기간 앱을 사용하지 않으면 자동으로 민감한 권한 (카메라, 위치 등)을 회수한다는 사실을 알고 계셨나요? 사실 권한 자동 초기화는 Android 11에 처음 도입됐던 기능입니다.그리고 추가로, Android 14에서 이와 관련하여 자동 권한 제거가 강화되었습니다. 권한과 관련해 조금 더 알아볼까요? 💡 자동 권한 초기화란자동 권한 초기화는 민감한 권한을 받은 앱이 장기간 사용되지 않을 경우 보안을 위해 권한을 자동으로 해제하는 기능입니다.단, 기업에서 사용하는 활성 장치 관리자 앱, 기업 정책에 따라 수정된 권한 등 일부 앱과 권한은 자동으로 해지 대상에서 제외된다고 합니다. 자동 권한 초기화에 .. 더보기 [Android] Network Inspector로 네트워크 에러 상황 구현해보기 안드로이드 개발을 하면서 서버 통신 시에 발생할 수 있는 네트워크 에러 처리에 대한 중요성을 많이 느꼈습니다.그래서 네트워크 통신 시에 발생할 수 있는 에러들에 대한 에러 처리를 구현하는 데에 시간을 많이 쏟았는데요,그런데 문득 내가 에러 처리를 잘 했나..? 어떻게 테스트하지? 라는 생각이 들었습니다. 진짜 네트워크 에러가 발생할 때까지 기다릴 수도 없고,테스트를 할 때 마다 백엔드에 직접 요청하기도 참 번거로운 일입니다. 그러던 도중 안드로이드 스튜디오에서 네트워크 상황을 만들어 볼 수 있는 Network Inspector를 발견했습니다. 🤔Network Inspector란?Network Inspector는 안드로이드 스튜디오 안에 포함되어 있는 도구로 앱이 네트워크를 통해 주고받는 HTTP/H.. 더보기 [Android] Compose 내부에 View 그리기 (AndroidView) Compose로 구성된 프로젝트를 진행하며 내부에 지도 SDK를 사용하며 MapView를 그려야 하는 일이 생겼는데요,이때 AndroidView를 사용하여 내부에 View를 그리게 되었습니다. 그리고 AndroidView와 함께 factory라는 매개변수를 사용하게 되며 처음 factory에 대해 접하게 되었고, 익숙한 듯 새로운 개념인 느낌을 받았습니다.Compose와 XML을 따로는 많이 사용해봤지만 Compose 내부에 View를 그리면서 새로운 개념을 접하게 되어 글로 정리하게 되었습니다. 그 전에 잠깐..! AndroidView와 Factory에 대해 설명하기 전에 Compose와 View의 차이점을 알고 가면 좋을 것 같아 차이점 먼저 가볍게 소개해 보려고 합니다. 🎨 Compose와 V.. 더보기 이전 1 2 3 4 ··· 10 다음