У меня проблема с тем, что Proguard удаляет методы моего отладочного APK (мне нужно запустить proguard при отладке beccause ограничения файла dex файла), даже если они используются в тесте apk. Например. Я использую метод GSON addProeprty в Unit test, но не в App apk. Этот метод удаляется и приводит к сбою теста. Но я не хочу настраивать proguard, чтобы просто сохранить все GSOn из-за ограничения файла dex, но также не хочу перечислять все методы отдельно. есть ли способ сказать rpguard рассматривать модульные тесты как точки входа исходного кода?
Тестирование на Android-блоке с включенной функцией proguard
Ответ 1
Это то, что я сделал.
Добавить пользовательский файл правил 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 следующее для своего приложения. Чтобы использовать файл proguard при тестировании.
/project/app/build.gradle
android {
debug {
minifyEnabled true
testProguardFile 'proguard-test-rules.pro'
}
}
Ответ 2
Ни один из вышеперечисленных ответов не помог мне. У меня было два вопроса: мне нужно было также использовать файл proguard по умолчанию для тестирования, и мой файл proguard по умолчанию был неправильным.
-
Чтобы использовать файл proguard по умолчанию, помимо вашего собственного:
android { debug { minifyEnabled true testProguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project-test.pro' } }
-
По умолчанию файл proguard (и вся папка
tools/proguard
), по-видимому, не заменяется по умолчанию, когда вы обновляете инструменты SDK через студию Android. Моя машина использовала устаревший файл конфигурации, что вызывало странные проблемы с защитой. Чтобы обновить конфигурацию по умолчанию proguard, замените ~/Library/Android/Sdk/tools/proguard/proguard-android.txt this.
Ответ 3
Тесты инструментария (и другие?) не используют тот же файл proguard, что и apk отладки/выпуска. Вы можете попробовать установить параметр testProguardFile
внутри блоков отладки и выпуска. Этот тестовый файл proguard может быть очень разрешительным, поскольку он не используется для apk отладки/выпуска.
Ответ 4
Я решил эту проблему в своей сборке, добавив дополнительный "dev" buildType
, где я включаю proguard, но настрою его, чтобы сохранить весь код в моем собственном пакете и несколько конкретных классов библиотеки, которые будут использоваться только от тестов. Я также отключил обфускацию в dev buildType
, чтобы его можно было отлаживать из среды IDE.
Для отладочных и релизных сборников я использую свои "настоящие" настройки proguard, включая обфускацию и оптимизацию.