Android(84)
-
Gradle dependencies | implementation vs api 차이, 언제 무엇을 써야 할까?
Android에서 환경 세팅을 할 때 library를 추가하기 위한 문법이 있다.implementation과 api.이 두가지를 혼용하여 사용하는 경우가 있는데 어떤 점이 다른걸까?📌 implementation vs api 차이implementation현재 모듈 내부에서만 라이브러리를 사용 가능.이 모듈을 의존하는 다른 모듈에서는 이 라이브러리를 사용할 수 없음.빌드 속도가 더 빠름 (다른 모듈에 영향을 주지 않아서!)api현재 모듈뿐만 아니라, 이 모듈을 의존하는 다른 모듈에서도 라이브러리를 사용 가능.즉, 이 모듈이 라이브러리를 공개(공유)하는 것과 같다.하지만 변경될 때 빌드 속도가 느려질 수 있음 (다른 모듈까지 영향을 받음)📌 예제 비교✅ implementation 사용dependencies..
2025.02.11 -
Gradle 빌드 최적화의 끝판왕! gradle.properties 100% 활용법
기존의 사용하던 Android Studio의 버전은 Koala였다.지난해 말, Ladybug가 출시되었고 나는 오늘 해당 버전으로 업그레이드 시도를 하였다. 역시나… 쉽지만은 않은 여정.AGP 버전을 Ladybug에 맞게 8.5로 업그레이드 시키면서 다양한 오류가 발생하였다.이 오류를 해결하기 위해 gradle.properties 내용을 많이 수정했다. 그렇다면 여기서 gradle.properties란 무엇일까?gradle.propertiesgradle.properties는 Gradle 빌드 시스템의 전역 설정을 정의하는 파일이다.이 파일은 Gradle 빌드 속도 최적화, JVM 메모리 설정, AndroidX 전환, R8 최적화 등의 설정을 관리한다. 📌 주요 역할✅ Gradle 빌드 성능 최적화✅ A..
2025.02.10 -
안드로이드 성능 최적화, 왜 경량 스레드(코루틴)를 써야 할까?
안드로이드에서는 흔히 API 통신을 할 때 Coroutine을 사용한다.코루틴은 안드로이드의 대표적인 경량 스레드 방식이다.그렇다면 스레드는 무엇이고, 그 안에서 경량 스레드는 무엇일까? 1. 스레드란?스레드(Thread) 는 프로세스 내부에서 실행되는 하나의 작업 흐름을 의미한다.흔히 프로세스와 많이 비교를 하는데 안드로이드로 따지자면 앱이라는 프로세스 안에 여러개의 스레드가 존재하는 것이다.즉, 스레드는 앱(프로세스)에서 여러개의 작업을 동시에 실행시켜주는 단위라고 생각하면 된다. 안드로이드 앱도 내부적으로 메인 스레드(Main Thread) 를 가지고 있고, UI를 업데이트하는 모든 작업은 여기서 수행이 된다.✅ 안드로이드에서 Thread안드로이드 앱에서는 기본적으로 하나의 메인 스레드(UI 스레드..
2025.02.08 -
Caused by: com.android.aaptcompiler.ResourceCompilationException: Failed to compile values resource file
🌟 들어가기 전앱에서 하드코딩 된 string을 전부 resources 파일로 고치는 작업을 하였는데,빌드하는 과정에서 오류가 발생했다.**Caused by: com.android.aaptcompiler.ResourceCompilationException: Failed to compile values resource file** 흔히 오류는 몇번째 줄에서 났는지 알려주면 그 부분만 체크하면 되는데이번 오류는 그냥 “빌드 오류나쪄~~~” 만 있으니까 찾아내기가 너무 답답… 이 경우에 체크해봐야 할 사항은 뭘까? 🔍 세부 내용특수문자를 체크하자나는 딱 values-en 을 빌드하는 과정에서 오류가 발생했다.하지만 리소스 형태도 그렇고 틀린 부분이 없었다.그렇다면 ‘영어’라는 특수성에서 시작된 문제일까? ..
2025.02.04 -
Android UI 관리하기 | 하드코딩 된 string을 모두 resource 파일로 옮기기
🌟 들어가기 전요즘 같은 국제적인 시대에 앱에서 다국어 처리는 매우 중요하다.strings.xml 리소스 파일을 통해 다들 다국어를 지원하고 있을 것이다. 하지만 개발을 하다보면 “나중에 해야지~” 하고 우선 큰 따옴표로 하드코딩 텍스트를 박아놓고 까먹은 경우가 있지 않을까?아니면 내가 신규로 맡은 앱에서 이전 개발자가 귀찮다는 이유로 리소스 관리를 하지 않은 경우도 있지 않을까? 그렇다면 나는 어떻게 하드코딩 된 string을 한번에 찾아낼 수 있을까? 🔍 세부 내용첫번째 방법. 전체 검색을 활용하자우리에겐 Ctrl+Shift+F 라는 전체 검색 기능이 존재한다. 하지만 단순 검색이 아니다.검색을 할 때도 정규표현식을 이용하여 검색하면 더 쉽게 검색할 수 있다.“.*” 라는 정규 표현식을 사용하면 ..
2025.02.04 -
Android에서 OkHttp 통신 시 Memory를 최적화 하기 위한 체크 포인트
🌟 들어가기 전최근 회사에서 관리하는 앱이 OOM 이슈가 자꾸 일어난다.RxJava 배압 이슈인가 하고 확인해봤더니 그 원인은 아니었다. Firebase의 Crashlytics를 뜯어본 결과 OutOfMemoryError는 okhttp 통신 시 발생하였고,이 부분에서 메모리 누출이 의심되었다. 그렇다면 OkHttp 통신할 때 Memory를 최적화하기 위한 체크 포인트는 무엇이 있을까? 🔍 세부 내용1. ConnectionPool 사용 추가연결 관리를 최적화하기 위해 명시적으로 ConnectionPool을 추가하면, OkHttp에서 연결을 재사용하여 새로운 연결을 생성하거나 닫는 작업을 줄여준다.// ConnectionPool 설정 추가ConnectionPool connectionPool = new C..
2025.01.21