安装了proguard的Androidunit testing

我有一个问题,Proguard剥离我的调试APK的方法(我需要在调试时运行proguard因为方法dex文件限制),即使它们在Test apk中使用。 例如,我在unit testing中使用GSON addProeprty方法,但不在App apk中使用。 这种方法被剥离并导致测试失败。 但我不想将proguard配置为仅保留所有GSOn,因为dex文件限制,但也不想单独列出所有方法。 有没有办法告诉rpguard将unit testing视为源代码入口点?

Solutions Collecting From Web of "安装了proguard的Androidunit testing"

这就是我所做的。

添加自定义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.** 

将以下内容添加到您的app的build.gradle中。 在测试时使用proguard文件。

/project/app/build.gradle

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

上述答案都没有为我做到这一点。 我有两个问题:我还需要使用默认的proguard文件进行测试,我的默认proguard文件是错误的。

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

     android { debug { minifyEnabled true testProguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project-test.pro' } } 
  2. 当您通过Android studio更新SDK工具时,默认的proguard文件(以及所有tools/proguard文件夹)显然不会被默认替换 。 我的机器使用的是过时的配置文件,这导致了奇怪的程序问题。 要更新proguard的默认配置,请用〜替换〜/ Library / Android / Sdk / tools / proguard / proguard-android.txt。

Instrumentation测试(以及其他?)不使用与调试/发布apk相同的proguard文件。 您可以尝试在调试和释放块中设置testProguardFile选项。 这个特定于测试的proguard文件可以非常宽松,因为它不用于调试/发布apk。

我已经在我的构建中通过额外的“dev” buildType解决了这个问题,我在其中启用了proguard,但是将其配置为将所有代码保存在我自己的包中,以及一些恰好仅在测试中使用的特定库类。 我还在dev buildType禁用了混淆,以便可以从IDE调试它。

对于调试和发布版本,我使用“真实”的proguard设置,包括模糊处理和优化。