Mam problem z tym, że Proguard usuwa metody mojego APK do debugowania (muszę uruchomić proguard na debugowanie, ponieważ limit pliku dex metody), nawet jeśli są one używane w testowym pakiecie APK. Na przykład. Używam metody GSON addProeprty w teście jednostki, ale nie w apk aplikacji. Ta metoda zostaje usunięta i powoduje niepowodzenie testu. Ale nie chcę skonfigurować proguard, aby zachować cały GSOn ze względu na limit plików dex, ale nie chcę też osobno wymieniać wszystkich metod. czy istnieje sposób, aby rpguard mógł uznać testy jednostkowe za punkty wejściowe kodu źródłowego?Testy urządzenia Android z proguard włączone
Odpowiedz
Rozwiązałem ten problem w mojej kompilacji, wprowadzając dodatkowe "dev" buildType
, w którym włączam proguard, ale konfiguruję go tak, aby zachować cały kod w moim własnym pakiecie, oraz kilka konkretnych klas bibliotek, z których zdarza się korzystać tylko testy. Wyłączam również zaciemnianie w dev buildType
, aby można było debugować z IDE.
Do kompilacji debugowania i wydania używam moich "prawdziwych" ustawień proguardów, w tym zaciemniania i optymalizacji.
Testy oprzyrządowania (i inne?) Nie używają tego samego pliku proguard co plik debug/release apk. Możesz spróbować ustawić opcję testProguardFile
w blokach debugowania i zwalniania. Ten specyficzny dla testu plik proguard może być bardzo permisywny, ponieważ nie jest używany w aplikacjach debug/release.
Oto co zrobiłem.
Dodaj niestandardowy plik reguł 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.**
dodawania następujących do build.gradle dla swojej aplikacji. Aby użyć pliku proguard podczas testowania.
/project/app/build.gradle
android {
debug {
minifyEnabled true
testProguardFile 'proguard-test-rules.pro'
}
}
Żadna z powyższych odpowiedzi wystarczyły dla mnie. Miałem dwa problemy: musiałem również użyć domyślnego pliku proguard do testowania, a mój domyślny plik proguard był nieprawidłowy.
Aby korzystać z domyślnego pliku PROGUARD, oprócz własnych:
android { debug { minifyEnabled true testProguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project-test.pro' } }
Domyślną PROGUARD (i wszystkich folderze
tools/proguard
) jest widocznie not replaced by default podczas aktualizacji narzędzia SDK poprzez Studio Androida. Moja maszyna używała przestarzałego pliku konfiguracyjnego, który powodował dziwne problemy z progamowaniem. Aby zaktualizować domyślną konfigurację proguard, zamień ~/Library/Android/Sdk/tools/proguard/proguard-android.txt na this.
Właśnie rozmawialiśmy o drugim numerze. Myślę, że warto wspomnieć, że od wersji 2.2.0 dodatku do androida dla gradle, 'proguard-android.txt' nie jest już używane i zamiast tego reguły domyślne są generowane w czasie kompilacji. Źródło: [wtyczka do systemu Android w wersji Gradle, wersja 2.2.0] (https://developer.android.com/studio/releases/gradle-plugin.html) – aProperFox
- 1. Android Proguard nie jest wbudowany
- 2. Proguard i Android :(
- 3. Android Cling/UPnP PROGUARD
- 4. Android - Powiadomienia push są włączone?
- 5. Testy aparatury Android z Mockito
- 6. PROGUARD usuwanie adnotacji w aplikacji Android
- 7. Proguard - również używać plików PROGUARD z modułów
- 8. Android wielowątkowy nie wspierający z proguard
- 9. Orientacja urządzenia z systemem Android
- 10. sztylet android wsparcia zasady PROGUARD
- 11. Phonegap 2.4 Android Proguard config
- 12. Android proguard, utrzymuj wewnętrzną klasę
- 13. Android Proguard pominąć zewnętrzny słoik
- 14. Proguard przerywa Android WebView, dlaczego?
- 15. Android ProGuard return Numer linii
- 16. Android dziwne testy sharding
- 17. Używanie ProGuard z Androidem
- 18. Przełączanie urządzenia A2DP (Android)
- 19. Próby Android Testy zgodności z prawem
- 20. Android DDMS - wysyłanie wywołań do rzeczywistego urządzenia
- 21. Android - jak drukować z urządzenia z systemem Android?
- 22. Jednostki kontrolerów testujących z zabezpieczeniem CSRF włączone w Spring Security
- 23. Uruchom testy jednostek jednostkowych i testy instrumentalne na Jenkins (Gradle)
- 24. kasował ActionBarSherlock z PROGUARD
- 25. Jak określić prędkość urządzenia z systemem Android?
- 26. Testy jednostkowe na Android NDK
- 27. Proguard z OrmLite na Androida
- 28. Komponenty architektury systemu Android - ViewModel Observable & Proguard
- 29. Android ProGuard: nie można odnaleźć odniesienia klasa
- 30. Android - Proguard duplikat wpisu zip błąd
Czy możesz udostępnić podobny plik proguard? –
Dziękuję, to powinno zadziałać. Mamy jednak kilka smaków i modułów, a posiadanie innego typu dla wszystkich to rodzaj bałaganu. Niestandardowe reguły proguarda z drugiej odpowiedzi pomogły. – Gaket