Android (29) 썸네일형 리스트형 [안드로이드]Android 15 (SDK 35) UI/화면 관련 변경사항과 대응 방법 Android 15(API 35)로 타깃 SDK를 올리면 Google Play 정책뿐만 아니라 UI/화면 처리 방식에서도 여러 변화가 생깁니다. 이 글에서는 주요 변경사항과 실제로 앱에 적용해야 할 수정 방안을 정리했습니다.1. Edge-to-Edge 모드 강제 적용🔄 변경 내용Android 15에서 SDK 35 이상 타깃 앱은 기본적으로 Edge-to-Edge 모드가 강제됩니다.상태바(Status bar), 내비게이션 바(Navigation bar)가 투명해지고, 앱 콘텐츠가 화면 끝까지 확장됩니다.🛠 수정 방안WindowInsets API를 사용해 시스템 바 영역을 안전하게 처리해야 합니다.예시:WindowCompat.setDecorFitsSystemWindows(window, false)View.. [안드로이드]Google Play, 16KB 메모리 페이지 크기 지원 의무화 (2025년 11월부터) 1. 배경안드로이드 기기는 지금까지 대부분 4KB 메모리 페이지 크기를 사용해 왔습니다.Android 15부터는 16KB 페이지 크기 환경을 지원하며, 차세대 하드웨어는 이를 기본으로 채택할 예정입니다.Google은 앱 성능 개선(실행 속도, 배터리 효율, 부팅 속도 등)을 위해 16KB를 표준으로 확산시키려 하고 있습니다.2. Google Play 정책 변화시행 시점: 2025년 11월 1일 이후 제출되는 신규 앱 및 업데이트부터 적용적용 대상: Android 15 이상을 타깃하는 앱요구사항: APK/AAB 내 모든 네이티브 라이브러리(.so)가 16KB 페이지 크기를 지원(p_align=0x4000) 해야 함👉 대응하지 않으면:Play Console에서 경고/승인 거부16KB 기기에서 앱 실행 불가.. [안드로이드] Play Store 심사 탈락 사례 모음 & 대응 방법 Play Store에 앱을 올릴 때 가장 긴장되는 순간은 바로 심사 대기 시간이다.안드로이드의 초기 시절에는 심사 없이 바로 배포가 가능했지만, 이제는 심사 과정이 필수적입니다. 그만큼 잘 만든 앱이라 생각했는데도 예상치 못한 이유로 심사에서 탈락하는 경우가 많다.이번 글에서는 실제 사례를 바탕으로 자주 발생하는 심사 탈락 사유와 그 해결 방법을 정리해보겠다. 주요 심사 탈락 사례 TOP 51. 접근 권한 오용 (Sensitive Permissions)설명: 백그라운드에서 위치, 카메라, 전화 기록 등을 수집해결:foregroundServiceType 선언 필요사용자에게 명확한 권한 요청 UI 제공Play Console에 "이 권한을 왜 쓰는지 설명하는 문서" 첨부2. 광고 정책 위반설명: 광고를 클릭 .. [안드로이드] NetworkOnMainThreadException 발생 원인과 해결 방법 android.os.NetworkOnMainThreadException안드로이드 개발 중 아래와 같은 익숙한 에러 메시지를 종종 본적이 있을 것이다.안드로이드에 익숙한 개발자이더라도 볼수 있는 에러고, 이 예외가 왜 발생하는지, 그리고 어떻게 해결하는지를 구체적으로 정리하도록 하겠다.1. NetworkOnMainThreadException은 언제 발생할까?NetworkOnMainThreadException은 네트워크 작업을 메인(UI) 스레드에서 실행할 때 발생한다.예를 들어 아래와 같이 HttpURLConnection을 onCreate() 안에서 직접 호출하면 바로 이 예외발생한다.URL url = new URL("https://example.com");HttpURLConnection conn = (H.. [Jetpack Compose] State와 State Hoisting 이해하기 Jetpack Compose를 사용하면서 가장 기본적이면서도 중요한 개념 중 하나가 State이다. 또한 이를 컴포저블 간에 깔끔하게 관리하기 위한 패턴으로 State Hoisting이 널리 사용되고 있다. 이 글에서는 Compose의 State가 무엇이고, 왜 State Hoisting이 필요한지, 그리고 실제로 어떻게 사용하는지 정리해보려고 한다.1. Compose에서 State란?Compose는 선언형 UI 프레임워크이다. "상태(State)가 바뀌면 UI를 다시 그린다"는 철학에 따라 작동한다.State는 UI를 그리는 데 필요한 데이터를 의미한다. 즉, 화면에 표시되는 값이나, 사용자의 입력, 버튼 클릭 여부 등이 모두 상태로 표현될 수 있다.Compose에서는 @Composable 함수 안에서.. [안드로이드] 앱 성능 최적화 : 렌더링 성능 렌더링 성능에 대해 글을 쓰기 전에 간단히 렌더링이 무엇인지 정리해본다. 렌더링(Rendering)은 간단히 말하면, 데이터를 화면에 보이는 형태로 그려주는 과정을 말한다.조금 풀어서 설명하면:안드로이드 앱에서는 코드나 데이터(예: 텍스트, 이미지, 버튼 등)가 실제로 눈에 보이는 화면(UI)으로 변환되는 과정을 "렌더링"이라고 부른다.예를 들면, 버튼을 만들었다면 → 이걸 "그리는 작업" → 유저가 터치할 수 있게 화면에 보여주기까지 이 전체 과정이 렌더링이다.예를 들면:개발자가: TextView에 "Hello World"를 설정함 → (데이터)앱이: 이 텍스트를 화면에 맞는 글꼴, 색상, 위치로 "그려서" 보여줌 → (렌더링)렌더링 왜 중요할까?렌더링이 느리면 화면이 버벅이거나, 스크롤할 때 끊김이 .. [안드로이드] 앱 성능 최적화 : 네트워크 최적화 네트워크는 사용자 경험에 직접적으로 영향을 주는 중요한 요소이다. 서버로부터의 느린 응답, 잦은 타임아웃, 불필요한 데이터 낭비는 결국 앱 이탈률 증가로 이어질 수밖에 없다. 나 또한 다른 안드로이드 앱을 사용할 때 이런 부분들을 체감하면서, 네트워크 통신 최적화의 중요성을 더욱 느끼게 되었다. 그래서 이번 글에서는 네트워크 최적화에 대해 정리해보려 한다. 1. 불필요한 API 호출 줄이기사용자가 보지 않는 화면에서 지속적으로 데이터를 요청하지 않도록 주의!ViewModel에서 UI 상태 변화에 따라 필요한 데이터만 요청하도록 설계2. 응답 캐싱 활용Retrofit + OkHttp 조합에서는 캐시 설정을 통해 동일한 요청을 반복하지 않도록 할 수 있다.val cacheSize = 10 * 1024 * 1.. [안드로이드] 앱 성능 최적화 : 메모리 최적화 요즘은 안드로이드 폰의 하드웨어 성능이 많이 좋아져서 예전처럼 OOM(Out Of Memory) 오류를 자주 보긴 어렵지만,초창기 안드로이드 시절에는 메모리 부족으로 인한 앱 종료가 흔한 문제였다. 지금도 앱을 개발하다 보면 "앱이 느려요", "종료돼요", "메모리 부족 경고가 떠요" 같은 피드백을 종종 받게 되는데, 이럴 땐 가장 먼저 앱의 메모리 사용량을 점검해보는 것이 좋다. 이 글에서는 메모리 누수를 방지하고, 효율적인 메모리 사용을 통해 성능을 개선하는 방법을 정리해보려고한다. 1. 불필요한 Context 참조 피하기Context는 앱의 거의 모든 리소스에 접근 가능한 강력한 객체지만, 잘못 사용하면 메모리 누수의 주범이 된다. ❌ 잘못된 예:class MyUtil(context: Context.. 이전 1 2 3 4 다음