Ich versuche, Release Build von Android App mit Proguard aktiviert zu testen. Ich habe eine zusätzliche Proguard-Regeldatei für Testabhängigkeiten erstellt, die in der Release-Regeldatei enthalten ist.Testen der Release- und Proguarded-Version der Android-App - NoSuchMethodError
-keep class android.test.** { *; }
-dontwarn android.test.**
# Reuse the release ProGuard mapping
-applymapping proguard.map
-dontshrink
-dontoptimize
Alles kompiliert gut, aber es schlägt zur Laufzeit fehl.
java.lang.NoSuchMethodError: android.test.AndroidTestRunner.addTestListener
at com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner.start(ProGuard:135)
at com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner$BridgeTestRunner.start(ProGuard:249)
at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:389)
at com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner.onCreate(ProGuard:114)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4702)
at android.app.ActivityThread.access$1600(ActivityThread.java:172)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1362)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5586)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
at dalvik.system.NativeStart.main(Native Method)
Ich bin mit Espresso für die Prüfung, wird die Instrumentierung Läufer in build.gradle
definiert
defaultConfig {
testApplicationId 'package.name.test'
testInstrumentationRunner 'com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner'
}
Jede Chance Tests für proguarded Release-Build zu laufen? Ich habe topic zurück von Mai gefunden und es sieht aus wie es unmöglich ist. Für mich sieht es so aus, als wäre es nur eine falsche Proguard-Konfiguration (fehlende Methode), aber die Zeile -keep class android.test.** { *; }
sollte dieses Problem beheben. Fehle ich etwas?
Versuchen Sie, meine Antwort in einer anderen Frage verwenden http://StackOverflow.com/a/15477898/1665964 –