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.** { *; }
라인은 그러한 문제를 해결해야한다. 내가 놓친 게 있니?
다른 질문에 내 대답을 사용하십시오 도움이되기를 바랍니다 http://stackoverflow.com/a/15477898/1665964 –