Retrofit2 난독화 했을 때 NullPointException 해결

2022. 10. 2. 16:53·레거시

Retrofit2를 사용하는 프로젝트를 개발하던 중, Proguard를 적용하여 난독화를 진행하면 NPE가 발생하는 문제를 직면했다.

난독화가 적용되지 않은 빌드에서는 발생하지 않던 문제였기에, 난독화 과정에서 발생한 문제임을 유추할 수 있었다.

 

Retrofit에서는 JSON의 키 값을 Java의 POJO에 맞게 매핑하기 위해 @SerializedName 어노테이션을 추가한다.

 

나 같은 경우 JSON의 키 값과 Kotlin의 data class의 변수 이름이 다른 경우가 있어,  통일성을 위해 모든 값에 @SerializedName을 붙여둔 부분이 문제가 되었다.

 

난독화 과정에서 @SerializedName 또한 난독화가 진행되었고, 데이터를 정상적으로 받아오지 못하게 되면서 NPE가 발생한 것이다.

 

이를 해결하기 위해, Proguard Rules에 아래와 같이 @SerializedName을 난독화 하지 않도록 규칙을 추가하였다.

 

# Prevent R8 from leaving Data object members always null
-keepclassmembers,allowobfuscation class * {
  @com.google.gson.annotations.SerializedName <fields>;
}

 

'레거시' 카테고리의 다른 글

Jetpack Compose 마이그레이션 후기  (0) 2023.07.10
LineageOS 17.1 for Vega Pop-Up Note 20/09/13  (1) 2020.09.13
LineageOS 17.1 for Vega Pop-Up Note 20/08/26  (0) 2020.08.26
TWRP 3.4.0-0 for Vega Pop-Up Note  (0) 2020.08.09
LineageOS 17.1 for Vega Pop-Up Note 20/08/09  (0) 2020.08.09
'레거시' 카테고리의 다른 글
  • Jetpack Compose 마이그레이션 후기
  • LineageOS 17.1 for Vega Pop-Up Note 20/09/13
  • LineageOS 17.1 for Vega Pop-Up Note 20/08/26
  • TWRP 3.4.0-0 for Vega Pop-Up Note
Kongjak
Kongjak
  • Kongjak
    Kongjak's IT Factory
    Kongjak
  • 전체
    오늘
    어제
    • 분류 전체보기 (29)
      • 개발 (0)
        • 안드로이드 (0)
      • 회고 (1)
      • 레거시 (28)
  • 블로그 메뉴

    • 홈
    • GitHub
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    A910
    베파놋
    팝업노트
    Pop-Up Note
    베가팝업노트
    AOSP
    팬택
    Kotlin
    안드로이드 커스텀롬
    리니지os
    Lineageos
    커스텀롬
    베가 아이언2
    베가 팝업노트
    안드로이드
    Android
    루팅
    베가
    파이
    A920S
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Kongjak
Retrofit2 난독화 했을 때 NullPointException 해결
상단으로

티스토리툴바