8

Proguard를 켠 상태에서 Android 앱의 출시 빌드를 테스트하려고합니다. 릴리스 규칙 파일에 포함 된 테스트 종속성에 대한 추가 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) 
내가 테스트를 위해 에스프레소를 사용하고

가, 계측 주자

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

build.gradle proguarded 릴리스 빌드에 대한 테스트를 실행하기 위해 모든 기회에 정의되어있다? 나는 5 월부터 topic을 찾았고 그것은 불가능한 것처럼 보입니다. 나에게 그것은 Proguard 구성 (누락 된 메소드)이 잘못된 것처럼 보이지만, -keep class android.test.** { *; } 라인은 그러한 문제를 해결해야한다. 내가 놓친 게 있니?

+0

다른 질문에 내 대답을 사용하십시오 도움이되기를 바랍니다 http://stackoverflow.com/a/15477898/1665964 –

답변

0

메신저 시도 중 선생님. 대신에

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

실제로 하드 "추측-A-코드가"그것에

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

을이 추가가

+0

아니요. 문제가되지 않습니다. 런타임시'android.test.AndroidTestRunner.addTestListener'에'NoSuchMethodError'로 실패하기 때문에 문제가 해결되지 않습니다. – tomrozb