App*_*als 15 instrumentation android gradle
我使用以下命令启用了proguard for debug build:
android {
buildTypes {
debug {
runProguard true
proguardFile 'proguard-debug.txt'
}
release {
runProguard true
proguardFile 'proguard-project.txt'
zipAlign true
}
}
}
Run Code Online (Sandbox Code Playgroud)
我执行此操作时遇到的问题是gradle构建还希望在proguardDebugTest任务期间进行测试.我似乎无法修改以访问此特定任务.有没有办法我可以调试调试apk而不是测试apk?
小智 18
runProguard很老了.它被minifyEnabled取代
使用minifyEnabled(以及新版gradle中的其他更改),您可能会遇到proguard配置适用于您的调试apk但不适用于检测测试的问题.为检测测试创建的apk将使用自己的proguard文件,因此更改现有的proguard文件将不起作用.
在这种情况下,您需要指定要在检测测试中使用的proguard文件.它可以非常宽松,因为它根本不会影响您的调试和发布版本.
// inside android block
debug {
shrinkResources true // removes unused graphics etc
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
testProguardFile('test-proguard-rules.pro')
}
Run Code Online (Sandbox Code Playgroud)
ssc*_*rth 10
从debug特定的测试应用程序中引入一个新的构建类型"派生",再次禁用ProGuard
android {
buildTypes {
debugTest.initWith(debug)
debugTest {
minifyEnabled false
}
}
}
Run Code Online (Sandbox Code Playgroud)
并通过将其名称分配给testBuildType属性来为测试应用程序使用该构建类型
android {
testBuildType 'debugTest'
}
Run Code Online (Sandbox Code Playgroud)
小智 3
放
gradle.projectsEvaluated {
proguardDebugTest.enabled = false
}
Run Code Online (Sandbox Code Playgroud)
它在你的构建脚本中。
这里有两件事需要知道:
afterEvaluate,因此您还需要将任务禁用延迟到 中afterEvaluate。一个小注意事项:它会禁用任务但构建失败。这是因为 :preDexDebugTest 任务不会在 proguard 打开时运行。到目前为止我发现的最好的解决方案是调试特定的混淆器配置。更多详细信息请参见此处。创建一个单独的 proguard 配置文件,包括常规 proguard 文件,如下所示:
-include proguard.cfg
Run Code Online (Sandbox Code Playgroud)
并添加测试配置。对我来说是:
-dontwarn org.mockito.**
-dontwarn sun.reflect.**
-dontwarn android.test.**
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6897 次 |
| 最近记录: |