Подтвердить что ты не робот

Тестирование на Android-блоке с включенной функцией proguard

У меня проблема с тем, что Proguard удаляет методы моего отладочного APK (мне нужно запустить proguard при отладке beccause ограничения файла dex файла), даже если они используются в тесте apk. Например. Я использую метод GSON addProeprty в Unit test, но не в App apk. Этот метод удаляется и приводит к сбою теста. Но я не хочу настраивать proguard, чтобы просто сохранить все GSOn из-за ограничения файла dex, но также не хочу перечислять все методы отдельно. есть ли способ сказать rpguard рассматривать модульные тесты как точки входа исходного кода?

4b9b3361

Ответ 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, включая обфускацию и оптимизацию.