8

Я пытаюсь проверить выпуск Android-приложения с Proguard включен. Я создал дополнительный файл правил Proguard для тестовых зависимостей, который включен в файл правил выпуска.Тестирование релиза и расширенная версия приложения для Android - NoSuchMethodError

-keep class android.test.** { *; } 
-dontwarn android.test.** 

# Reuse the release ProGuard mapping 
-applymapping proguard.map 
-dontshrink 
-dontoptimize 

Все компилируется нормально, но оно не работает во время выполнения.

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) 

Я использую Эспрессо для тестирования, инструментовка бегун определяется в build.gradle

defaultConfig { 
    testApplicationId 'package.name.test' 
    testInstrumentationRunner 'com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner' 
} 

Любой шанс для выполнения тестов для сборки proguarded выпуска? Я нашел topic с мая, и похоже, что это невозможно. Для меня это похоже на неправильную конфигурацию Proguard (отсутствует метод), но строка -keep class android.test.** { *; } должна исправить такую ​​проблему. Я что-то упускаю?

+0

Попробуйте использовать мой ответ на другой вопрос http://stackoverflow.com/a/15477898/1665964 –

ответ

0

Im пытается help Сэр.

вместо этого

-keep class android.test.** { *; } 
-dontwarn android.test.** 

добавить это к нему

-keep class android.test.** { *; } 
-keep class junit.** { *; } 
-dontwarn android.test.** 
-dontwarn junit.** 

на самом деле это трудно «догадка-а-код» надеюсь, что это помогает

+0

Нет, это не проблема. Он не работает во время выполнения с 'NoSuchMethodError' на' android.test.AndroidTestRunner.addTestListener', поэтому ваше решение не решает проблему. – tomrozb