У меня проблема с тем, что Proguard удаляет методы моего отладочного APK (мне нужно запустить proguard при отладке beccause ограничения файла dex файла), даже если они используются в Test apk. Например. Я использую метод GSON addProeprty в модульном тесте, но не в App apk. Этот метод удаляется и приводит к сбою теста. Но я не хочу настраивать proguard, чтобы просто сохранить все GSOn из-за ограничения файла dex, но также не хочу перечислять все методы отдельно. есть ли способ сказать rpguard рассматривать модульные тесты как точки входа в исходный код?Android-тесты с поддержкой proguard
ответ
Я решил эту проблему в своей сборке, имея дополнительный «dev» buildType
, где я включаю proguard, но настраиваю его, чтобы сохранить весь код в моем собственном пакете, и несколько конкретных классов библиотеки, которые используются из только тесты. Я также отключил обфускацию в dev buildType
, чтобы его можно было отлаживать из среды IDE.
Для отладочных и выпускных сборников я использую свои «настоящие» настройки proguard, включая обфускацию и оптимизацию.
Контрольные тесты (и другие?) Не используют тот же файл proguard, что и apk отладки/выпуска. Вы можете попробовать установить опцию testProguardFile
внутри блоков отладки и выпуска. Этот тестовый файл proguard может быть очень разрешительным, поскольку он не используется для apk отладки/выпуска.
Это то, что я сделал.
Добавить пользовательский файл правил 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'
}
}
Ни один из вышеперечисленных ответов не сделал трюк для меня. У меня было два вопроса: мне нужно было также использовать файл proguard по умолчанию для тестирования, и мой файл proguard по умолчанию был неправильным.
Чтобы использовать файл Proguard по умолчанию, в дополнении к своему усмотрению:
android { debug { minifyEnabled true testProguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project-test.pro' } }
файл ProGuard по умолчанию (и все папок
tools/proguard
), по-видимому not replaced by default при обновлении SDK инструментов через Студия Android. Моя машина использовала устаревший файл конфигурации, что вызывало странные проблемы с защитой. Чтобы обновить конфигурацию по умолчанию для proguard, замените ~/Library/Android/Sdk/tools/proguard/proguard-android.txt на this.
Прошел только второй вопрос. Я думаю, стоит упомянуть, что с версии 2.2.0 плагина android для gradle 'proguard-android.txt' больше не используется, и вместо этого правила по умолчанию генерируются во время сборки. Источник: [Android-плагин для Gradle, версия 2.2.0] (https://developer.android.com/studio/releases/gradle-plugin.html) – aProperFox
- 1. Как создать apk с поддержкой proguard
- 2. Ошибка ProGuard при экспорте проекта android с поддержкой библиотеки
- 3. Proguard: Proguard.ParseException
- 4. Proguard - Proguard возвращен с кодом ошибки 1
- 5. Как включить ProGuard с Crashlytics?
- 6. конфигурации ProGuard для AndroidPlot
- 7. Legacy httpclient createClientConnectionManager() не вызывается в версиях версии с поддержкой proguard
- 8. Использование Spongycastle с Proguard
- 9. Ошибка Proguard с parse
- 10. CrossWalk с ProGuard
- 11. Ошибка ProGuard с AWS
- 12. Обфускация с proguard
- 13. запутывания ActionBarSherlock с Proguard
- 14. Proguard с Roboguice
- 15. Quickblox-2.4 с Proguard
- 16. Ksoap2 с ProGuard
- 17. Ошибка ProGuard с ArrayIndexOutOfBoundsException
- 18. Retrofit @QueryMap с proguard
- 19. Обфускация с использованием proguard
- 20. Proguard ошибка с фреской
- 21. дооснащения 1,9 с Proguard
- 22. Использование ProGuard с Android
- 23. Невозможно скомпилировать с proguard
- 24. Проблема с Instabug Proguard
- 25. ошибки proguard с AndroidAsync
- 26. Смак сбоев с ProGuard
- 27. Proguard с Autovalue
- 28. Использование ProGuard с Android.
- 29. Proguard с AChartEngine
- 30. java.util.Date нуль с ProGuard
Вы можете поделиться аналогичным файлом proguard? –
Спасибо, это должно сработать. Тем не менее, у нас есть несколько вариантов и модулей, и у них есть другой тип сборки для всех из них. Пользовательские правила proguard из другого ответа помогли. – Gaket