我在我们的项目中使用Kofax,它使用了很多Reflection和Robogiuice。我们正在使用Dexguard来混淆我们的代码。我们遇到的一个问题是私有构造函数被剥离了。我的代码中已经有了这个:
-keepclassmembers class * {
private <init>(...);
}
但它没有帮助,我的一些类的构造函数仍然被剥离。
1)在&gt; com.kofax.mobile.sdk.capture.MainModule $ ReflectionMakeSize中找不到合适的构造函数。类必须具有&gt;使用@Inject注释的一个(且仅一个)构造函数或不是私有的零参数&gt;构造函数。 at&gt; com.kofax.mobile.sdk.capture.MainModule $ ReflectionMakeSize.class(Unknown&gt; Source) at&gt; com.kofax.mobile.sdk.capture.MainModule.configure(:145)
任何人都知道如何解决这个问题?
EDIT。
我刚刚发现,只删除private static class
的构造函数,其他类的构造函数仍在那里。
任何人都知道为什么?
答案 0 :(得分:0)
错误消息显示您必须具有使用@Inject
注释的构造函数或不带参数的非私有构造函数。
所以我会添加这样的规则:
-keepclassmembers class * {
!private <init>();
@com.google.inject.Inject <init>(...);
@javax.inject.Inject <init>(...);
}
我添加了com.google.inject
注入注释以及来自javax.inject
的注释,因为我不确定从kofax引用哪一个。您可以删除不需要的那个。
答案 1 :(得分:-1)
其中一个解决方案可能是在构造函数之前添加@Keep
注释
例如:
@Keep
private Adapter(FragmentActivity mActivity, List<RowModel> list) {
super(mActivity, list);
}