如何使用proguard牙签规则?

how to use proguard toothpick rule?

我正在项目中使用 TP。
我正在使用 TP 注入一些对象。但是当我在我的应用程序中应用 proguard 规则时。它在调试模式下工作正常但是在发布模式下为空对象提供我通过@Inject 注释注入的所有对象。

我在我们的项目中有这个工作,除了 Issue #146 中的内容之外,您需要添加更多内容。 android 支持注释库中有一个 @Keep 注释设置,可用于标记 class 不被混淆,我不得不对一些 kotlin 数据执行此操作 class es 因为 Retrofit 和 kotlin-reflect 库不能很好地处理混淆。无论如何,可以找到要点 here。此外,您可能想特别告诉它不要混淆生成的 FactoryRegistry class 中的任何内容,在您告诉 toothpick 生成非反射注册表和工厂实现的包中。

    # Note that if we could use kapt to generate registries, possible to get rid of this
-keepattributes Annotation
# Do not obfuscate classes with Injected Constructors
-keepclasseswithmembernames class * {
    @javax.inject.Inject (...);
}
# Do not obfuscate classes with Injected Fields
-keepclasseswithmembernames class * {
    @javax.inject.Inject ;
}
# Do not obfuscate classes with Injected Methods
-keepclasseswithmembernames class * {
    @javax.inject.Inject ;
}
-keep @android.support.annotation.Keep class *
-keep @javax.inject.Singleton class *
-dontwarn javax.inject.**
-dontwarn javax.annotation.**
-keep class **$$Factory { *; }
-keep class **$$MemberInjector { *; }

-adaptclassstrings
-keep class toothpick.** { *; }