최근에 이클립스 안드로이드 프로젝트 용 ProGuard를 활성화했습니다. 외부 libs 및 동적으로 참조 된 클래스를 proguard.cfg에 추가 한 후에 apk를 빌드 할 때 오류가 발생하지 않습니다. 그러나 설치된 응용 프로그램을 시작하려고하면 NoSuchMethodError가 발생합니다.안드로이드 : Proguard NoSuchMethodError
주 활동의 onCreate 메서드에서 호출 된 특정 메서드로 범위를 좁혔습니다. 일을 단순화하기 위해, 여기에 클래스와 메소드가 어떻게 생겼는지입니다 (내가 코드를 많이 남겨,하지만 난이 그것을 설명해야한다고 생각) : 다음과 같이
이public class TestMain extends TabActivity implements OnSharedPreferenceChangeListener{
...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
testMethod();
}
}
testMethod()가 정의된다
private void testMethod() {
int charsLeft = maxPostMessageLength - someEditText.length();
...
}
"someEditText.length()"부분을 제거하면 앱이 시작됩니다. 그래서, 내가 볼 수있는 방법, 찾을 수없는 메서드는 EditText.length() 메서드입니다. 내가 제거 testMethod에서 "someEditText.length()"과에서 onCreate 방법에 직접 넣을 때 이상하게도하지만, 응용 프로그램도 시작합니다
이@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
test = someEditText.length();
testMethod();
}
사람이 내가이 오류를 제거 할 수있는 방법을 알고 있나요 왜 onCreate 메서드에서 someEditText.length()를 직접 호출 할 수 있지만 onCreate 메서드에서 호출하는 메서드에서는 호출 할 수 없습니다. Proguard를 사용하지 않으면 앱이 정상적으로 작동합니다.
편집 : proguard.cfg에서 -dontshrink, -dontobfuscate 및 -dontoptimzie 옵션을 시도했습니다. -dontptimize를 사용하면 오류없이 앱이 시작됩니다. 여전히이 특정 오류의 원인은 무엇입니까?
나를 지적 해 주셔서 감사합니다. -dontshrink 옵션을 시도했지만 오류는 여전히 동일합니다. 그러나 -dontoptimize를 사용하면 앱이 아무런 오류없이 시작됩니다. 나는 그에 따라 나의 질문을 편집했다. – Manuel