Это может быть не очевидно из ответа sgjesse, но это происходит в двух разных местах.Задачи для запуска инструментальных тестов на минимизированном вводе примерно таковы:
...
задача compileDebugWithJavaC задача
compileClassesAndResourcesWithR8ForDebug
compileDebugTestWithJavaC
задача compileClassesAndResourcesWithR8ForDebugTest
в задачах и выше, 1. в задачах и выше2. компилирует ваше приложение и оптимизирует его с R8, 3. и 4. компилирует ваши тесты и компилирует тесты с R8, имея оригинальное приложение по пути к библиотеке
proguardFiles getDefaultProguardFile ('proguard-android.txt'), 'proguard-rules.txt' применяется к 2. когда вы компилируете свое приложение с R8
testProguardFile 'proguard-rules-test.pro' применяется к тестам, когда вы компилируете тесты с R8.По этой причине добавление правил хранения в «нормальные» файлы proguard работает, потому что вы добавляете их позднее.
Если вы хотите, чтобы правила применялись к основному приложению при запуске отладки, просто добавьтеотладить конфигурацию и добавить туда еще один файл:
buildTypes{
debug {
..
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt', 'proguard-rules-test.pro'
}
Во всех случаях я не понимаю, почему вы «тестируете» свое минифицированное приложение, если добавляете -keep public class ** {*;}.Это в основном не позволит R8 выполнять какие-либо оптимизации, так что вы также можете тестировать без minifyEnabled.В идеале вы должны найти точки входа в свои тесты в своем приложении и только добавить их.Это, конечно, не так просто с созданными сопутствующими классами в kotlin.