본문 바로가기

반응형

분류 전체보기

(56)
[안드로이드]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 기기에서 앱 실행 불가..
[취미활동]스윙댄스 신발 선택 가이드: 가죽 밑창 붙이기 & 구매처 정리 1. 가죽 밑창 신발을 신는 이유스윙댄스에서 가죽 밑창 신발을 신는 가장 큰 이유는 마찰력이 적어 턴(Turn)과 피벗(Pivot) 동작이 편하기 때문입니다.바닥에 잘 미끄러지기 때문에 관절 부담이 덜하고, 춤 동작이 자연스러워집니다.하지만 단점도 있습니다.대부분 밑창이 얇아 쿠션감이 적다 → 장시간 춤을 추면 발바닥 통증 유발심한 경우 족저근막염으로 이어질 수 있음즉, 장단점을 이해하고 본인 스타일과 건강 상태에 맞춰 선택하는 게 중요합니다.2. 스타일별 추천 신발🎵 지터벅(Jitterbug)턴이나 피벗 동작이 많지 않음밑창이 깨끗한 일반 운동화(케즈, 반스, 탐스 등) 로도 충분발이 편한 신발이 우선🎵 린디홉 팔뤄(Follower)스위블, 턴 동작이 많음발목 관절 부담을 줄이기 위해 밑창이 고무인..
[안드로이드] Proguard / R8 완전 정리(안드로이드 코드 최적화와 난독화) 1. 난독화가 필요한 이유앱을 개발하다 보면, 코드 보호가 중요한 이슈로 떠오릅니다. 특히, 오픈소스나 보안이 중요한 앱에서 코드 분석을 방지하기 위해서 **난독화(obfuscation)**는 필수적이다. 그 이유를 몇 가지가 있다.디컴파일 방지APK 파일은 .dex 파일로 변환되어 기기에 설치됩니다. 이 파일을 역으로 디컴파일하면 원본 소스를 복원할 수 있다. 코드 난독화는 이를 어렵게 만들어 소스 코드의 유출을 방지한다.저작권 보호애플리케이션이 다른 앱의 코드를 그대로 가져와서 사용하는 것을 방지하는 데 유효하다. 난독화된 코드는 타인이 쉽게 이해하거나 재사용하기 어렵다.보안 강화민감한 알고리즘이나 사용자 인증 방식 등을 난독화하여 해커들이 해당 로직을 분석하고 악용하는 것을 방지할 수 있다. 예를 ..
[안드로이드] 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"를 설정함 → (데이터)앱이: 이 텍스트를 화면에 맞는 글꼴, 색상, 위치로 "그려서" 보여줌 → (렌더링)렌더링 왜 중요할까?렌더링이 느리면 화면이 버벅이거나, 스크롤할 때 끊김이 ..

반응형