Android
-
모듈 간 테스트 코드 공유하기 (Android Test Fixtures)Android 2025. 10. 26. 20:51
OKR (Objective & Key Results)Objective:Android Gradle의 testFixtures 기능을 이해하고,모듈 간 테스트 유틸과 더블(mock) 코드를 재사용할 수 있도록 한다.Key Results:testFixtures.enable = true의 역할을 명확히 설명할 수 있다.src/testFixtures 디렉토리를 구성해 공용 테스트 코드를 작성할 수 있다.다른 모듈에서 testFixtures를 불러오는 방법을 직접 적용할 수 있다.Test Fixtures란?테스트를 작성하다 보면 여러 테스트에서 공통으로 사용하는 코드가 생긴다.예를 들어 다음과 같은 코드들이다.테스트용 유틸리티 클래스더미 데이터 생성기Mock 객체공용 테스트 헬퍼이런 코드를 src/test/java에..
-
Android에서 Glide를 더이상 사용할 수 없는 이유Android 2025. 10. 21. 23:00
Kotlin 2.2.20 Exposed Visibility Warning 정리🧩 경고의 의미Kotlin 2.2.20부터 다음과 같은 새로운 컴파일러 경고가 추가됨:“A more visible declaration references a less visible declaration in its signature.”즉,더 넓은 가시성의 선언(public/internal 등)이 자신의 시그니처에 더 좁은 가시성(private/internal/package-private 등)을 사용하면 경고 발생.이 경고는 Kotlin 2.4부터는 에러로 승격될 예정임.📘 예시로 이해하기internal class Apublic fun foo(): A = A()// ❌ public 함수가 internal 타입을 반환 → 경고..
-
Android에서 Gson을 더 이상 사용하면 안 되는 이유와 Kotlinx.serialization 마이그레이션 가이드Android 2025. 10. 21. 22:55
📌 1. Gson을 Android에서 더 이상 권장하지 않는 이유Gson은 이제 Android 프로젝트에서 공식적으로 비권장(deprecated) 되는 방향입니다.이유는 단순한 JSON 변환 문제를 넘어, 성능·안정성·유지보수성 문제 때문입니다.https://github.com/google/gson/pull/2856🔍 주요 이유 요약항목설명1. 리플렉션 기반 구조Gson은 런타임에 리플렉션(reflection)으로 필드 접근 및 변환을 수행합니다. 👉 R8/ProGuard 난독화 시 필드명이 바뀌면 JSON 매핑이 깨질 위험이 있습니다.2. Kotlin 언어 지원 한계Kotlin의 data class, default parameter, nullable, sealed class 같은 기능을 제대로 지..
-
LiveData와 Flow: Android UI 데이터 관찰의 두 가지 접근 방식 비교Android 2024. 11. 26. 11:06
// LiveDataisViewVisible.asLiveData().observe(viewLifecycleOwner) { isVisible -> // ...}// FlowisViewVisible.collect { isVisible -> // ...}두 코드 스니펫은 `isViewVisible`이라는 상태를 관찰하여 UI를 업데이트하는 방식에서 차이가 있습니다. 이 두 가지 접근 방식의 주요 차이점은 다음과 같습니다.`asLiveData().observe()` 사용:LiveData: Android의 생명주기 인식 데이터 홀더 클래스로, 주로 UI 컴포넌트와 데이터의 동기화를 위해 사용됩니다.생명주기 인식: `observe(viewLifecycleOwner)`를 사용하면 관찰자가 `viewLifecycleO..
-
OpenGL Basics on AndroidAndroid 2024. 5. 3. 22:58
목표OpenGL 기본개념 알기Android에서 OpenGL로 삼각형 그리기OpenGL ES란?OpenGL ES는 3차원 컴퓨터 그래픽스 API인 OpenGL(Open Graphic Library)의 임베디드 시스템을 위한 버전이다. ES가 Embaedded System을 의미한다.OpenGL은 다양한 API를 제공하며 해당 API들을 통해 점, 선, 삼각형, 사각형, 빛 등을 화면에 그릴 수 있다. 즉, OpenGL은 화면에 뭔가 그릴 수 있도록 도와주는 API들로 이루어진 라이브러리다.비슷한 API로 Windows에는 DirectX가 있다. 차이점은 OpenGL은 크로스 플랫폼을 지원한다.Vertex3차원 그래픽의 가장 원자적인 요소정점의 정보를 가지고 있는 data structurePosition을 ..
-
Dependency Injection과 Hilt 맛보기Android 2024. 5. 3. 20:38
Dependency의존성 : A가 B를 의존한다. = A가 B를 참조한다.의존대상 B가 변하면, 그것이 A에 영향을 미친다.B의 기능이 추가 또는 변경되거나 형식이 바뀌면 그 영향이 A에 미친다.Car는 Engine이 없으면 동작하지 않는다.Engine은 Car의 의존성Car가 Engine에 의존한다. = Car가 Engine을 참조한다.// Without DIclass Car { private val engine: Engine = Engine() ... ...}Car class는 engine instance 생성과 어떻게 구성하는지까지 책임을 지고 있다.SRP(단일 책임 원칙) 위반하나의 Class에 하기에는 책임이 많다.Car와 Engine은 타이트한 의존성을 갖는다.Engine에 대..
-
안드로이드 SQLite 속도 향상!Android 2013. 3. 26. 18:48
출처 : http://osh2357.blog.me/130098179373안드로이드에서 사용하는 SQLite 는 모바일에서 가볍게 사용하기에 너무 좋다. 하지만 다수의 Insert 문을 반복할때의 수행속도는 입이 쩍벌어지게 느렸는데...... 원인을 파해쳐보니 SQLite 에서는 Transaction을 사용하고 안하고의 차이가 다량 Insert 시 엄청난 시간 차이를 보여주고 있었다. 다음 사이트의 Insert Test 를 보면 이해가 되리라 -> http://www.sqlite.org/speed.html 1000 건의 record 를 Insert 했을시에SQLite 는 13.061 초MySQL 은 0.114 초가 걸린다 반면에 25000 건의 record 를 Transaction 을 이용하여 Insert..
-
Error generating final archive: Debug certificate expired on ... 문제해결법Android 2013. 3. 13. 16:01
Error generating final archive: Debug certificate expired on ... 이클립스에서 안드로이드 애플리케이션 빌드 중에 이런 오류 메시지가 나오는 경우가 있다. Debug certificate가 만료되어서 발생하는 문제인데, Debug certificate는 만들어진 후 365일이 지나면 만료된다. 그러므로 만료된 Debug certificate를 새로 갱신해주면 된다. 방법은 간단하다. debug.keystore 파일을 삭제한 후, 프로젝트를 클린하면 이 debug.keystore파일 생성해준다고 모든 사이트들이 알려주나 나의 경우는 절대 다시 생성되지 않았다. 콘솔창으로 debug.keystore가 저장되있던 경로로 이동한후 아래의 명령어로 생성해준 후에야 ..