Skip to content

fix(app): R8 이 응답 DTO 를 지워 요청이 나가지 않던 문제를 막는다 - #673

Merged
Sadturtleman merged 1 commit into
developfrom
fix/655
Nov 10, 2026
Merged

Sadturtleman merged 1 commit into
developfrom
fix/655

Conversation

@Sadturtleman

Copy link
Copy Markdown
Contributor

원인

release 빌드에서 R8 이 본문을 읽지 않는 응답 DTO 를 미사용 클래스로 보고 지웠습니다. 지워진 타입은 제네릭 시그니처에서 Object 로 치환돼 반환형이 BaseResponse<Object> 가 되고, Retrofit 이 요청을 보내기 전 컨버터 생성 단계에서 실패합니다.

IllegalArgumentException: Unable to create converter for BaseResponse<java.lang.Object>
Caused by: SerializationException: Serializer for class 'Any' is not found.

지워진 DTO 는 EmptyData, UpdateProfileResponse, AcknowledgeResponse, CancelManualResponse 4종이고, 아래 11개 API 가 서버에 닿지 않았습니다.

API 영향
POST·DELETE v1/devices 푸시 기기 등록·폐기 (#655)
PUT v1/notifications/read 레드닷 안 꺼짐 (#656)
PUT·DELETE v1/users/me/notification-settings/mutes/{id} 챌린지 알림 뮤트
DELETE v1/users/me/blocks/users/{id}, .../blocks/challenges/{id} 차단 해제
POST v1/auth/logout 서버 로그아웃
PATCH v1/users/me/profile 프로필 수정
POST v1/verifications/{id}/ack 인증 결과 확인
DELETE v1/verifications/{id} 수동 인증 취소

작업 내용

  • app/proguard-rules.pro 에 com.ruleup 의 @Serializable 클래스 keep 규칙을 추가했습니다. EmptyData 만 지키면 나머지 3종이 남고, 본문을 안 읽는 응답 DTO 가 새로 생길 때 재발하므로 범위를 DTO 전체로 잡았습니다.

검증

  • Play 배포본(1.0.4)을 기기에서 내려받아 dex 와 ART 리플렉션으로 확인: BaseResponse<Object> 11건, EmptyData 는 ClassNotFoundException
  • 수정 후 release 빌드: 4종 DTO 와 serializer 가 mapping.txt 에 남고 BaseResponse<Object> 0건
  • 수정 빌드를 기기 ART 에 로드: Retrofit 메서드 88개 중 Object 로 바뀐 반환형 0개, EmptyData.Companion.serializer() 정상
  • 서명된 빌드로 로그인 후 POST /v1/devices 가 서버에 찍히는지는 아직 확인하지 못했습니다(배포 후 서버 로그로 확인 필요)

이 PR 에 없는 것

Closes #655
Closes #656

🤖 Generated with Claude Code

본문을 읽지 않는 응답 DTO(EmptyData 등 4종)를 R8 이 미사용으로 보고 지우면서
반환형이 BaseResponse<Object> 로 바뀌어, Retrofit 이 요청 전에 컨버터 생성에서 실패했다.
FCM 기기 등록·알림 읽음·프로필 수정 등 11개 API 가 release 빌드에서 서버에 닿지 않았다.

com.ruleup 의 @serializable 클래스를 keep 해 제네릭 시그니처와 serializer 를 보존한다.

Refs #655, #656

Co-Authored-By: Claude <[email protected]>
@sonarqubecloud

Copy link
Copy Markdown

@Sadturtleman
Sadturtleman merged commit 1f3e416 into develop Nov 10, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant