본문 바로가기

728x90
반응형

Android

(24)
Retrofit2 Connection/Timeout 에러 트러블슈팅 초기 설정 문제: Connection/Timeout 에러Retrofit을 사용하여 API 요청을 보냈는데, Connection Timeout이나 Socket Timeout 에러가 발생하는 경우가 있다.필자도 개발하면서 종종 겪는 에러인데 이건 주로 서버 응답이 느리거나, 네트워크 상태가 불안정하거나, 또는 설정 자체가 잘못된 경우에 발생한다.그래서 Connection Timeout이나 Socket Timeout 에러가 발생했을 때 어떻게 대응하는게 좋을지 정리해봤다. 우선 타임아웃의 종류와 발생 원인을 정리해보면 다음과 같다.API 호출 시 발생하는 타임아웃은 크게 세 가지로 나눌 수 있으며, 각각 다른 시점에서 문제가 발생한다.종류발생 시점원인connectTimeout서버와의 연결을 시도할 때서버 주..
[Android] "다른 프로세스가 파일을 사용 중이기 때문에 프로세스가 액세스 할 수 없습니다" 오류 트러블슈팅 🛠️ 문제안드로이드 스튜디오에서 앱을 Run했더니 "다른 프로세스가 파일을 사용 중이기 때문에 프로세스가 액세스 할 수 없습니다"라는 오류가 뜨면서 빌드에 실패했다. 왜 이런 오류가 발생할까? 🤔오류 메시지: "다른 프로세스가 파일을 사용 중이기 때문에 프로세스가 액세스 할 수 없습니다" (또는 The process cannot access the file because it is being used by another process.)이 오류는 Android Studio의 Gradle 빌드 프로세스가 특정 파일(주로 APK, 컴파일된 리소스 등)에 접근하여 쓰기 또는 읽기 작업을 시도할 때 운영체제(Windows) 내의 다른 프로세스가 해당 파일을 점유하고 있어서 발생한다. 💡 주요 원인Gradle..
LazyColumn에서 부드러운 스크롤을 위한 트러블슈팅 🛠️ “Compose에서 스크롤이 미세하게 끊긴다면, 단순한 성능 문제가 아닐 수도 있다.” 1. 문제 상황 진단: 왜 LazyColumn이 느려졌을까?LazyColumn은 RecyclerView와 같이 화면에 보이는 아이템만 Compose하고 Layout하는 지연 로딩(Lazy Loading) 메커니즘을 사용해 리소스 사용을 최소화한다. 그럼에도 불구하고 성능 문제가 발생하는 주된 원인은 다음과 같다.1.1. 🔑 Key 미사용: 아이템 재활용 실패LazyColumn은 스크롤 시 화면 밖으로 나간 아이템을 캐시에 저장하고 재활용하여 성능을 최적화한다.하지만 아이템에 고유한 Key를 지정하지 않으면 리스트의 데이터가 변경될 때마다 Compose가 아이템의 상태 변화를 정확히 파악하지 못하고 불필요하게 전체 ..
Android Studio Feature Drop에 관하여... (2025년 9월 30일 기준) 1. 들어가며Jetpack Compose가 나오기 전만 해도 안드로이드 개발을 할 때 Android Studio를 꾸준히 업데이트하지는 않았던 것 같다. 내 주변 개발자들도 Android Studio는 버그가 많으니 꾸준히 업데이트할 필요는 없다는 말을 종종 하곤 했다.Jetpack Compose가 View System을 대체하고 있는 지금 Android Studio는 개발자의 생산성을 향상시키는데 Focus를 맞추기 위해 여러 실험적인 기능들이 계속 개발중이고 이제는 업그레이드도 중요해졌다고 생각한다. 2024년 5월부터 Android Studio Drop (혹은 “Feature Drop” 버전)이라는 이름이 자주 언급된다.이 글에서는 일반 Android Studio와 Drop 버전의 차이, 최신 Fe..
[Android] Google Play Core (com.google.android.play:core) SDK Version 1.10.3 보안 오류 오류com.google.android.play:core dependency를다음과 같이 보이지 않던 빨간 밑줄이 생겼다. 빨간 밑줄 위에 커서를 올렸더니 1.10.3 SDK 버전을 Play Console에 앱을 배포하지 못하게 할 것이라는 메시지가 있었다. 그리고 Google Play Console에 들어가보면 다음과 같은 메시지가 뜨는 것을 볼 수 있다.번역해보면, 1.10.3 버전이 Android 14와 호환되지 않고, 사용자 보안을 개선하기 위한 브로드캐스트 리시버에 역방향 비호환 변화를 가져온다는 것이 요지이다.즉, Android 최신 버전과 호환되지 않는다는 것으로 이해하면 될 듯하다.   해결방법play:core dependency를 다음과 같이com.google.android.play:fea..
[Android] build.gradle의 buildDir deprecated 오류프로젝트 단위의 build.gradle에 들어가보니 다음과 같이 buildDir이 deprecated되어 있었다. deprecated된 이유를 보니, gradle 버전을 8.x로 업그레이드하면서부터 앱이 동작하는데 문제는 없었지만, deprecated된게 신경 쓰여서 대체하면 좋겠다고 생각했다.  해결책다음 사이트를 보니 Project.buildDir는 deprecated되었고 Project.layout.buildDirectory로 replace된다고 하더라..https://docs.gradle.org/current/userguide/upgrading_version_8.html#project_builddir 그리고 스택오버플로에서도 다음과 같은 정보가 있었다.The recommended replace..
[Android] error: constant expression required 오류 'error: constant expression required' 오류는 gradle 플러그인 버전을 8.0 이상으로 올리면서부터 발생했다. 이 오류는 Android Gradle Plugin 버전이 8.0.0이 되면서부터 빌드 속도를 최적화하기 위해리소스(예: 상수 표현식) R.id.컴포넌트id가 더 이상 선언되지 않아서 발생하는 것이었다. 즉 다음과 같이 코드를 작성하면 오류가 발생하게 된다.switch(R.id.btn) { case btn1: ... break; case btn2: ... break; case btn3: ... break; ... default: ... break;}   해결..
[Android] SAXParseException lineNumber: 숫자; columnNumber: 숫자 에러 해결방법 오류org.xml.sax.SAXParseException; systemId: file:/C:/Users/User/AndroidStudioProjects/android/app/src/main/res/layout/activity_main.xml; lineNumber: 1; columnNumber: 36; White space is required before the encoding pseudo attribute in the XML declaration.안드로이드 스튜디오로 개발하면서 겪은 현상이지만, 이 오류를 해결하기 위해 서치를 해보니 다양한 곳에서 발생하는 것 같았다. 다른 곳에서도 도움이 될 수도 있으니 참고하면 좋을 것이다. 원인이 오류는 에러 Exception 라인에서 유추해볼 수 있듯이, 빌드 ..

728x90
반응형