Androidunit testing启用了proguard

我有一个问题,即Proguard在我的debuggingAPK(我需要在debugging时运行proguard,因为方法dex文件的限制),甚至在testingapk中使用它们的方法。 例如,我在unit testing中使用GSON addProeprty方法,但不是在应用程序apk。 此方法被剥离并导致testing失败。 但是我不想configurationproguard因为dex文件的限制而只保留所有的GSOn,而且也不想单独列出所有的方法。 有没有办法告诉rpguard考虑unit testing作为源代码的入口点?

Solutions Collecting From Web of "Androidunit testing启用了proguard"

这就是我所做的。

添加一个自定义的proguard规则文件。

/project/app/proguard-test-rules.pro

# Proguard rules that are applied to your test apk/code. -ignorewarnings -keepattributes *Annotation* -dontnote junit.framework.** -dontnote junit.runner.** -dontwarn android.test.** -dontwarn android.support.test.** -dontwarn org.junit.** -dontwarn org.hamcrest.** -dontwarn com.squareup.javawriter.JavaWriter # Uncomment this if you use Mockito #-dontwarn org.mockito.** 

将以下内容添加到您的应用程序的build.gradle中。 testing时使用proguard文件。

/project/app/build.gradle

 android { debug { minifyEnabled true testProguardFile 'proguard-test-rules.pro' } } 

上面的答案都没有为我做的伎俩。 我有两个问题:我还需要使用默认的proguard文件进行testing,而我的默认proguard文件是错误的。

  1. 要使用默认的proguard文件,除了你自己的:

     android { debug { minifyEnabled true testProguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project-test.pro' } } 
  2. 当您通过Android Studio更新SDK工具时,默认的proguard文件(以及所有tools/proguard文件夹)显然不会被默认取代 。 我的机器使用过时的configuration文件,这是造成奇怪的proguard问题。 要更新proguard的默认configuration,用这个replace〜/ Library / Android / Sdk / tools / proguard / proguard-android.txt。

仪表testing(和其他?)不要使用相同的proguard文件作为您的debugging/发行apk。 你可以尝试在debug和release块中设置testProguardFile选项。 这个特定于testing的proguard文件可能非常宽松,因为它没有被用于debugging/发布apk。

我已经在我的构build中解决了这个问题,通过增加一个“dev” buildType启用proguard,但是configuration它将所有的代码保存在我自己的包中,还有一些特定的库类只是在testing中使用。 我也在开发buildType禁用模糊处理,以便它可以从IDEdebugging。

对于debugging和发布构build,我使用我的“真实”proguard设置,包括模糊处理和优化。