코드에서 일부 리플렉션을 사용하는 상당히 큰 프로젝트가 있습니다. 다음과 같은 충돌의 원인이되는 코드의 라인 : 356 행 :Proguard.cfg에 누락 된 클래스/메서드 문제를 해결하는 방법
다른 파일의try {
itemViewHolder = mViewHolderClass.getDeclaredConstructor(item.getClass())
.newInstance(item);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
:
Class<? extends ItemViewHolder> mViewHolderClass;
하고 항목 중 하나입니다
W/System.err(22122): java.lang.NoSuchMethodException: <init> [class com.DynaZu.Tracker.cd]
W/System.err(22122): at java.lang.Class.getConstructorOrMethod(Class.java:460)
W/System.err(22122): at java.lang.Class.getDeclaredConstructor(Class.java:588)
W/System.err(22122): at com.DynaZu.Tracker.ItemAdapter.getView(SourceFile:356)
W/System.err(22122): at android.widget.AbsListView.obtainView(AbsListView.java:2267)
은은 SourceFile인가 클래스 Item에서 파생 된 여러 잠재적 클래스.
dump.txt 등을 살펴보면 proguard.cfg의 특정 지시문으로 돌아갈 수없는 많은 요소가 있습니다. 나는 같은 것을 원하는 실현
+ Methodref [com/DynaZu/Tracker/cd.<init> (Ljava/lang/String;)V]
+ Methodref [com/DynaZu/Tracker/cd.a()Ljava/lang/String;]
+ Methodref [com/DynaZu/Tracker/cd.equals (Ljava/lang/Object;)Z]
+ Methodref [com/DynaZu/Tracker/cd.h()J]
+ Methodref [com/DynaZu/Tracker/cd.o()Ljava/lang/String;]
+ Methodref [com/DynaZu/Tracker/cd.p()Lcom/DynaZu/Tracker/cd;]
+ Methodref [com/DynaZu/Tracker/cd.q()F]
+ Methodref [com/DynaZu/Tracker/ce.a (J)Lcom/DynaZu/Tracker/cd;]
+ Methodref [com/DynaZu/Tracker/ce.a (Lcom/DynaZu/Tracker/cd;)V]
+ InterfaceMethodref [com/DynaZu/Tracker/ac.a (IILcom/DynaZu/Tracker/cd;ZZ)V]
+ NameAndType [<init> (Lcom/DynaZu/Tracker/cd;)V]
+ NameAndType [a (IILcom/DynaZu/Tracker/cd;ZZ)V]
+ NameAndType [a (J)Lcom/DynaZu/Tracker/cd;]
+ NameAndType [a (Lcom/DynaZu/Tracker/cd;)V]
+ NameAndType [a Lcom/DynaZu/Tracker/cd;]
+ NameAndType [b (Lcom/DynaZu/Tracker/cd;I)V]
+ NameAndType [c Lcom/DynaZu/Tracker/cd;]
+ NameAndType [p()Lcom/DynaZu/Tracker/cd;]
+ Utf8 [()Lcom/DynaZu/Tracker/cd;]
그리고 proguard.cfg을 위해 : dump.txt에서
-keepclassmembers class * extends Item
-keep class * extends Item
을 어떤 제안 도움이 될 것입니다. 예를 들어, 하나의 java 파일이나이 java 파일의 한 섹션에 대해 proguard를 사용하는 방법이 있습니까 ???
이에 보면, 나는 같은 것을 추가해야 믿습니다 등
-keepclassmembers class com.DynaZu.Tracker.TaskViewHolder
{
<init>(com.DynaZu.Tracker.Task);
}
을 ...하지만 ProGuard에서이 클래스는 알 수없는 불평 ...? 그렇다면 프로젝트의 기존 클래스를 proguard.cfg에 어떻게 표시해야합니까? ??? TaskViewHolder라는 클래스 이름 만 시도해 봤습니다.