4차 데모데이 체크리스트 중 하나로 난독화 적용이 있었다.난독화를 적용하면서 알아본 내용들과 팀원들에게 설명하기 위해 문서화해둔 것을 티스토리에도 올려본다. 난독화 관련 PRhttps://github.com/woowacourse-teams/2024-ody/pull/415 config: 난독화 적용 by kimhm0728 · Pull Request #415 · woowacourse-teams/2024-ody🚩 연관 이슈 close #414 📝 작업 내용 난독화 적용 외부 라이브러리 난독화 예외 처리 추가 🏞️ 스크린샷 (선택) 🗣️ 리뷰 요구사항 (선택) 난독화 관련 간단히 정리했는데 참고만 부탁드려여github.com R8 컴파일러Android Gradle 플러그인 3.4.0 이상을 사용하여..
특정 뷰가 사용자에게 보여지지 않을 때를 처리할 경우가 있다. 안드로이드 View 클래스에 onWindowVisibilityChanged 라는 리스너가 있었는데, xml이나 코드 상에서 뷰의 visibility 자체를 GONE, INVISIBLE, VISIBLE로 변경하는 경우에만 호출이 되었다. (참고: https://developer.android.com/reference/android/view/View#onWindowVisibilityChanged(int)) 하지만 visibility는 변하지 않고 다른 뷰에 의해 가려지거나 스크롤 액션에 의해 가려지는 경우를 특정하고 싶었다. 그래서 디바이스 화면 자체에서 뷰의 x, y 좌표를 구하고, 그 좌표가 음수값인지 아닌지에 따라 hide 여부를 판별했다...
Failed to compile values file. Resource compilation failed. Check logs for details. Illegal char at index app-mergeDebugResources-70:/values/values.xml resources 파일을 컴파일하면서 생기는 에러인데 따로 빨간줄이 쳐지는게 없어서 찾기 오래걸린다;; 보통 strings, themes, colors, attrs 등 xml 파일에 오타가 나면 발생한다. 1) colors.xml ##FFCC02 위처럼 #을 두개 작성하거나 컬러 코드가 7자리인 경우 오류가 발생한다. 2) attrs.xml 커스텀뷰에 커스텀 속성을 추가할 때, 속성 이름이 이미 존재하는 속성 이름인 경우 발생한다. 나는..
Hilt는 안드로이드 스튜디오에서 편리하게 DI를 사용할 수 있도록 Dagger 기반으로 빌드된 라이브러리이다. 프로젝트의 모든 Android 클래스에 컨테이너를 제공하고, 수명 주기를 자동으로 관리하여 DI를 사용한다. 1. build.gradle (kts 기준) 프로젝트 수준 plugins { id("com.google.dagger.hilt.android") version "2.48" apply false } 모듈 수준 plugins { id("kotlin-kapt") id("dagger.hilt.android.plugin") } dependencies { implementation ("com.google.dagger:hilt-android:2.48") kapt ("com.google.dagger:h..
app:itemBackground - 이 속성을 통해 background color 지정시 메뉴 클릭 효과 나타나지 않음 app:itemIconTint - icon의 색상 app:itemTextColor - text의 색상 app:labelVisibilityMode - labeled로 지정시 icon과 함께 label이 항상 띄워짐 (아이콘만 띄우고 싶을 때 unlabeled) item이 클릭되었을 때, 클릭되지 않았을 때 color를 지정해주고 싶은 경우, 위와 같이 color xml 파일을 생성한다. (res/animator 폴더 안에) state_checked="true"는 클릭되었을 때 color를 지정, false는 클릭되지 않았을 때 color를 지정. 그리고 app:itemIconTint와 ..
Navigation 앱 내의 화면을 들어갔다 나올 수 있게 플로우를 정한다. 일반적으로 화면을 전환할 수 있는 하단바를 의미함. Navigation 구성요소 Navigation Graph: 모든 Navigation 관련 정보가 한 곳에 모여있는 xml 파일. 사용자가 앱에서 갈 수 있는 모든 경로를 보여준다. NavHost: Navigation Graph에서 화면을 표시하는 빈 컨테이너. NavController: NavHost에서 앱 Navigation을 관리하는 객체. 사용자가 앱 내에서 화면을 이동할 때 NavHost에서 화면 전환을 controll하는 역할. Navigation Graph에서 어떤 경로로 이동할지 NavController에게 전달하고, NavController는 NavHost에게 ..
https://thdbs523.tistory.com/378 [안드로이드/코틀린] FCM를 이용하여 사용자 별로 Notification 보내기-1 FCM FCM는 Firebase Cloud Messaging의 약자로, 구글 클라우드 서버를 이용해서 사용자들에게 메시지를 보낼 수 있다. FCM에서는 디바이스 별로 Token을 부여하는데, 이 Token을 사용해서 특정한 사용자에게 thdbs523.tistory.com 위 포스팅에서 생성한 토큰을 가지고 디바이스 별로 메시지를 전송하는 방법은 아래와 같은 방법들이 있다고 했다. 1. Firebase Console에서 메시지를 전송하기 2. Postman으로 Firebase 서버에 POST 요청을 보내기 3. 안드로이드 상에서 Retrofit을 사용해 Fireb..
FCM FCM는 Firebase Cloud Messaging의 약자로, 구글 클라우드 서버를 이용해서 사용자들에게 메시지를 보낼 수 있다. FCM에서는 디바이스 별로 Token을 부여하는데, 이 Token을 사용해서 특정한 사용자에게 메시지를 보내는 것이다. FCM를 통해서 메시지를 전송하는 흐름은 위 그림과 같다. 1. 사용자가 앱에 처음 접속할 때 Firebase에서 토큰을 발급해준다. 2. 앱에서는 이 토큰을 서버에 저장한다. 3. 서버에서는 저장된 토큰을 이용해 Firebase 서버에 POST 요청을 보낸다. 4. POST 요청을 받은 Firebase서버는 해당하는 토큰을 가지는 디바이스에게 메시지를 보낸다. 먼저 토큰을 Firebase 서버에서 받아오는 방법을 알아보자. 1. Firebase에 ..