Android 如何使用proguard牙签规则?

Android 如何使用proguard牙签规则?,android,android-studio,android-proguard,sbt-proguard,toothpick-di,Android,Android Studio,Android Proguard,Sbt Proguard,Toothpick Di,我正在我的项目中使用TP。 我正在使用TP注入一些对象。但是当我在应用程序中应用proguard规则时。它在调试模式下运行良好,但在发布模式下为空对象提供我通过@Inject注解注入的所有对象。我在我们的项目中实现了这一点,除了有问题之外#146,您还需要添加一些东西。android support annotations库中有一个@Keep注释设置,可以用来标记一个不需要模糊处理的类,我不得不在一些kotlin数据类上进行这项修改,kotlin reflect库无法很好地处理模糊处理。总之,要

我正在我的项目中使用TP。

我正在使用TP注入一些对象。但是当我在应用程序中应用proguard规则时。它在调试模式下运行良好,但在发布模式下为空对象提供我通过@Inject注解注入的所有对象。

我在我们的项目中实现了这一点,除了有问题之外#146,您还需要添加一些东西。android support annotations库中有一个@Keep注释设置,可以用来标记一个不需要模糊处理的类,我不得不在一些kotlin数据类上进行这项修改,kotlin reflect库无法很好地处理模糊处理。总之,要点是可以找到的。此外,您可能希望特别告诉它不要混淆您告诉Toothick生成非反射注册表和工厂实现的包中生成的FactoryRegistry类中的任何内容

    # 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.** { *; }

没有足够的细节来帮助您。至少,应该添加proguard块。你试过这个吗?我已经试过了。“但这对我不起作用。”Snicolasalm我几乎90%的课程都是一些注射类课程。另外10%的模型类不应因为改装和Gson而混淆。看起来只需为Proguard配置添加-dontobfuscate就更简单了。。。但我不喜欢这个解决方案。