📱 Android11 [Android] Room DB 마이그레이션에 대해 오늘은 Room DB의 마이그레이션에 대해 알아보자! 내가 실제로 간단한 메모앱을 만들면서 경험해 본 사례인데, 단순히 entity만 수정하여 빌드하고 앱을 업데이트하게 된다면? Looks like you've changed schema but forgot to update the version number. You can simply fix this by increasing the version number. 이러한 오류와 함께 앱이 종료되는 경우를 많이 보게 된다. 에러 로그만 잘 봐준다면 쉽게 해결할 수 있다! 1. 데이터베이스 버전 올리기 Database 파일의 Database Version을 올려주자 @Database( entities = [MemoEntity::class], version = .. 2023. 12. 4. [Android] 프로가드(Proguard)에 대해 오늘은 난독화 도구인 프로가드에 대해 알아보도록 하겠다! Proguard란? 자바 기반 코드를 난독화해 주는 도구로 난독화, 용량 축소, 코드 축소, 최적화 등의 기능을 제공하여 안드로이드 애플리케이션 기본 보안 수단으로 구축할 필요성이 있다. 사용 이유 코드 난독화 - 코드를 읽기 어렵게 만드는 작업 - 디컴파일시 소스 코드를 보호할 수 있다. - 클래스와 멤버 이름을 줄여 DEX 파일 크기를 줄입니다. 앱 용량 줄이기 - 불필요한 메서드 제거 - 소스를 컴파일하게 되면 Dex파일이 생성되고 하나의 Dex파일은 65536개의 메서드를 참고할 수 있다.이를 초과하게 되면 여러 개의 Dex파일(=MultiDex)이 생성되고 이는 빌드 속도를 느리게 하고 용량이 커지게 된다. 리소스 축소 - 앱 라이브러리 .. 2023. 11. 29. [Android] invalidate()와 requestLayout()의 차이 오늘은 Andoid에서 사용하는 invalidate()와 requestLayout()의 차이에 대해 알아보겠다! 우선 View의 생명주기를 알아놓으면 좋다. invalidate는 onDraw를 반드시 호출하지만, 사이즈를 지정하는 콜백인 onMeasure가 호출되진 않는다. 그러므로 Size가 변하지 않는다. requestLayout은 invalidate와 반대로 onMeasure를 호출하지만, onDraw를 반드시 호출하진 않는다. 대신 onMeasure가 호출되므로 Size가 업데이트된다. 즉, 단순한 변경 사항을 보여주기 위하여 다시 그리는 경우엔 invalidate를 사용하고 사이즈가 바뀌어 뷰 간의 경계에도 영향을 준다면 requestLayout을 호출해서 사용하자! 2023. 11. 21. [Android] 캐시에 대해 오늘은 안드로이드 개발자가 알아야 할 캐시들에 대해 알아보겠다! 1. 앱 내 캐시 (App Internal Cache): - 안드로이드 앱은 내부 저장소 영역에 캐시 데이터를 저장할 수 있습니다. 이러한 캐시는 앱이 실행 중일 때만 접근 가능하며, 앱을 삭제하거나 업데이트할 때 삭제될 수 있습니다. 2. 앱 외부 캐시 (App External Cache): - 안드로이드는 외부 저장소 영역에 앱 캐시를 저장할 수 있는 기능을 제공합니다. 이러한 캐시는 앱을 삭제해도 유지되며, 공용 저장소에 액세스 권한이 필요합니다. 3. SharedPreferences: - SharedPreferences를 사용하여 간단한 키-값 쌍 데이터를 저장할 수 있습니다. 이를 통해 설정, 환경 설정, 사용자 선호도 등을 저장하.. 2023. 11. 3. 이전 1 2 3 다음