/ PROGUARD, ANDROID

Proguard를 사용한 코드 난독화 - 유닛 테스트에서 java.lang.VerifyError가 발생하는 경우

관련 글

프로가드를 적용한 후, 정상적으로 잘 동작하던 유닛 테스트가 아래와 유사한 에러 메시지와 함께 제대로 실행되지 않았습니다.

java.lang.VerifyError: Expecting a stackmap frame at branch target 17
Exception Details:
  Location:
    com/flurry/android/FlurryAgent.init(Landroid/content/Context;Ljava/lang/String;)V @5: if_icmpge
  Reason:
    Expected stackmap frame at this location.
  Bytecode:
    0x0000000: b200 4410 0aa2 000c b200 4512 08b8 0061
    0x0000010: b12a c700 0dbb 0039 5912 12b7 0070 bf2b
    0x0000020: c600 0a2b b600 729a 000d bb00 3659 1221
    0x0000030: b700 6dbf b800 692a 2bb8 0058 a700 0d4d
    0x0000040: b200 4512 012c b800 5fb1

이를 해결하려면, 유닛 테스트를 포함하는 모듈의 빌드 스크립트의 테스트 옵션에 다음과 같이 -noverify 옵션을 추가하면 됩니다.

android {

    testOptions {

        unitTests {
            all {
                jvmArgs '-noverify'
            }
        }
    }
}

추가 참고자료:

kunny

커니

안드로이드와 오픈소스, 코틀린(Kotlin)에 관심이 많습니다. 한국 GDG 안드로이드 운영자 및 GDE 안드로이드로 활동했으며, 현재 구글에서 애드몹 기술 지원을 담당하고 있습니다.

Read More