Android JAR 파일에 ProGuard 적용중 The method xxx() is undefined for the type ObfuscationJar xxx.java

The method showMessage() is undefined for the type ObfuscationJar MainActivity.java /AndroidObfuscationTest/src/com/wwforever/androidobfuscationtest line 15 Java Problem

 프로가드 처음 사용하다보니 이슈가 많네요. 위 그림과 로그와 같이 프로가드 적용된 JAR 파일을 안드로이드 프로젝트에서 적용해 컴파일중 에러가 발생했네요.

 프로가드 적용된 JAR 파일을 JD-GUI로 디컴파일 해보면 실제로 메소드가 없습니다. 프로가드 적용할 때 옵션 조절에 실패를 한거죠.

 제 경우 사용하지 않는 것을 지워버리는 옵션인 Shrinking에서 옵션을 추가해줘서 해결했습니다. 그림과 같이 Keep additional classes and class members에서 Add를 눌러 예외로 유지시킬 것을 하나 추가합니다. Class가 중요하고 Class members에 필드나 메소드를 추가할 수 있습니다.

package com.wwforever.obfuscationjartest;

import android.util.Log;

public class ObfuscationJar {
 public static void showMessage() {
  Log.d("WestWoodForever", "Android JAR ObfuscationTest");
 }
}

 JAR 파일의 내용이 간단하게 위와 같은데요, Add method를 눌러 위와같게 설정해줍니다. Return type은 void, Name에 *은 와일드카드로 다 된다는 것을 뜻합니다. Argument types의 ... 도 마찬가지 의미입니다.

 수정 된 옵션으로 프로가드 적용 후 만들어진 jar 파일을 역시나 디컴파일 해봤습니다. 메소드가 잘 살아있네요.

댓글

이 블로그의 인기 게시물

'xxx.exe' 프로그램을 시작할 수 없습니다. 지정된 파일을 찾을 수 없습니다.

goorm IDE에서 node.js 프로젝트로 Hello World Simple Server 만들어 띄워보기

애드센스 수익을 웨스턴 유니온으로 수표대신 현금으로 지급 받아보자.