Den*_*989 24 android unit-testing proguard
我有一个问题,Proguard剥离我的调试APK的方法(我需要在调试时运行proguard因为方法dex文件限制),即使它们在Test apk中使用.例如,我在单元测试中使用GSON addProeprty方法,但不在App apk中使用.这种方法被剥离并导致测试失败.但我不想将proguard配置为仅保留所有GSOn,因为dex文件限制,但也不希望单独列出所有方法.有没有办法告诉rpguard将单元测试视为源代码入口点?
the*_*osh 39
这就是我做的.
添加自定义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.**
Run Code Online (Sandbox Code Playgroud)
将以下内容添加到您的app的build.gradle中.在测试时使用proguard文件.
/project/app/build.gradle
android {
debug {
minifyEnabled true
testProguardFile 'proguard-test-rules.pro'
}
}
Run Code Online (Sandbox Code Playgroud)
上述答案都没有为我做到这一点.我有两个问题:我还需要使用默认的proguard文件进行测试,我的默认proguard文件是错误的.
要使用默认的proguard文件,除了您自己的:
android {
debug {
minifyEnabled true
testProguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project-test.pro'
}
}
Run Code Online (Sandbox Code Playgroud)当您通过Android studio更新SDK工具时,默认的proguard文件(以及所有tools/proguard文件夹)显然不会被默认替换.我的机器使用的是过时的配置文件,这导致了奇怪的程序问题.要更新的ProGuard的默认配置,以取代〜/库/安卓/ SDK /工具/ proguard的/ proguard的-android.txt 此.
我在构建中解决了这个问题,方法是添加一个额外的“dev” buildType,在其中启用 proguard,但将其配置为将所有代码保留在我自己的包中,以及一些仅在测试中使用的特定库类。我还在开发中禁用了混淆buildType,以便可以从 IDE 进行调试。
对于调试和发布版本,我使用“真正的”混淆器设置,包括混淆和优化。
| 归档时间: |
|
| 查看次数: |
7540 次 |
| 最近记录: |