2011-04-08 6 views
14

ProGuard를 사용하여 Android 애플리케이션을 최적화합니다. 그러나 안드로이드 계측 테스트를 위해서는 모든 멤버를 유지할 수있는 클래스가 필요합니다. 나는 다양한 접근 방법, 마지막 존재 시도 :ProGuard로 클래스의 모든 메소드를 유지하는 방법

-keepclassmembers public class com.mycompany.myclass { 
    *; 
} 

을하지만 놀랍게도 나는 아직도 여기 고통스러운 부분이 두 개의 생성자이고 하나는 꽤 많은 매개 변수를 가지고 있다는 것입니다

java.lang.NoSuchMethodError: com.mycompany.myclass.<init> 

를 얻을.

ProGuard에서 완전히 변경되지 않고 변경되지 않은 클래스를 유지하는 올바른 구문을 아는 사람이 있습니까?

+1

''와일드 카드를 사용하십시오. – Matthias

답변

17

글쎄, 그것은 고백의 시간입니다. 그 질문은 들썩 들썩하다. -keepclassmembers이 맞습니다. 문제는 팀 동료가 코드를 위반하여 생성자가 실제로 존재하지 않았기 때문에 발생했습니다.

전체 클래스가 최적화 된 변경 사항이있는 경우 kharles 제안에 따라 -keep을 사용해야하지만 모든 메소드가 제 위치에 유지되도록하려면 이 필요합니다.

{*;}은 테스트 용입니다. 프로덕션을 위해서는보다 정교한 방법을 사용해야합니다.

같은 문제가있는 사람을 위해 질문을 계속합니다.

0

는 (사용 유지하고, 더 {*})

-keep public class com.mycompany.myclass 

을 시도

+0

아니, 그게 더 나빠져. 창피한 진실 : 위의 진술은 정확합니다. 팀 동료가 코드를 위반했기 때문에 이것이 작동하지 않습니다. 그래서 같은 문제가있는 다른 사람들을 위해 질문을 삭제하거나 보관하십시오. – Martin

관련 문제