Kongjak
Kongjak's IT Factory
Kongjak
  • 분류 전체보기 (27)
    • Study (1)
      • Android (1)
      • Server (0)
      • 백준 (0)
    • Development (25)
      • AOSP (24)
      • Android (0)
      • Web (1)
    • Service (1)
      • Pantech Archive (1)
    • Archive (0)

블로그 메뉴

  • 홈
  • GitHub
  • Pantech Archive

공지사항

인기 글

  • [가이드] 리니지 OS 16 빌드하기 for 팬택 MSM8⋯
    2019.12.29
    [가이드] 리니지 OS 16 빌드하기 for 팬택 MSM8⋯
  • LineageOS 17.1 for Vega Pop-Up N⋯
    2020.01.11
  • LineageOS 17.1 for Vega Pop-Up N⋯
    2020.09.13
    LineageOS 17.1 for Vega Pop-Up N⋯
  • TWRP 3.4.0-0 for Vega Pop-Up Not⋯
    2020.08.09
  • LineageOS 17.0 for Vega Pop-Up N⋯
    2020.01.05

최근 댓글

  • 감사합니다. 덕분에 설치 잘하고 킷캣에서 벗어났네요 이 이⋯
    안녕하세요
  • 수정했습니다. 감사합니다!
    Kongjak
  • 안녕하세요? 따라하고 있는데 중간에 오타가 있는 것 같습니⋯
    정해준
  • 베가아이언2도 해당되는 건가요?
    김말자
  • 안녕하세요 좋은 강좌 정말정말 감사드려요 덕분에 기본적인 ⋯
    익명`

최근 글

  • Retrofit2 난독화 했을 때 NullPointExce⋯
    2022.10.02
  • LineageOS 17.1 for Vega Pop-Up N⋯
    2020.09.13
    LineageOS 17.1 for Vega Pop-Up N⋯
  • LineageOS 17.1 for Vega Pop-Up N⋯
    2020.08.26
    LineageOS 17.1 for Vega Pop-Up N⋯
  • TWRP 3.4.0-0 for Vega Pop-Up Not⋯
    2020.08.09
  • LineageOS 17.1 for Vega Pop-Up N⋯
    2020.08.09

티스토리

hELLO · Designed By 정상우.
Kongjak

Kongjak's IT Factory

Study/Android

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>;
}

 

    Android, Gson, JSON, Kotlin, proguard, retrofit2, 난독화
    Kongjak
    Kongjak
    댓글쓰기

    티스토리툴바