0

我在我们的项目中使用 Kofax,它使用了很多 Reflection 和 Robogiuice。我们正在使用 Dexguard 来混淆我们的代码。我们遇到的问题之一是私有构造函数被剥离。我的代码中已经有了这个:

-keepclassmembers class *  {
   private <init>(...);
}

但这无济于事,我的一些类的构造函数仍然被剥离。

1) 在 >com.kofax.mobile.sdk.capture.MainModule$ReflectionMakeSize 中找不到合适的构造函数。类必须具有 > 一个(且只有一个)用 @Inject 注释的构造函数或一个非私有的零参数 > 构造函数。在 >com.kofax.mobile.sdk.capture.MainModule$ReflectionMakeSize.class(Unknown >Source) 在 >com.kofax.mobile.sdk.capture.MainModule.configure(:145)

任何人都知道如何解决这个问题?

编辑。

我刚刚发现,只有构造函数private static class被删除,其他类的构造函数仍然存在。

有谁知道为什么?

4

2 回答 2

0

错误消息说您必须具有带注释的构造函数@Inject或不带参数的非私有构造函数。

所以我会添加这样的规则:

-keepclassmembers class * {
    !private <init>();
    @com.google.inject.Inject <init>(...);
    @javax.inject.Inject <init>(...);
}

我添加了com.google.injectInject 注释和javax.inject来自 kofax 的注释,因为我不确定哪一个是引用的。您可以删除不需要的。

于 2016-07-29T11:29:57.597 回答
0

解决方案之一可能是@Keep在此类构造函数之前添加注释
例如:

@Keep
private Adapter(FragmentActivity mActivity, List<RowModel> list) {
    super(mActivity, list);
}
于 2016-07-29T08:28:34.337 回答