【问题标题】:Testing Scala on Android : "Couldn't find scala.reflect.ScalaSignature.bytes"在 Android 上测试 Scala:“找不到 scala.reflect.ScalaSignature.bytes”
【发布时间】:2016-08-14 11:39:45
【问题描述】:

我正在尝试用 Scala 编写 instrumentation test(完整代码为 here)。

任何想法可能导致java.lang.IncompatibleClassChangeError: Couldn't find scala.reflect.ScalaSignature.bytes 运行时错误?

我正在尝试将scala.reflect.ScalaSignature.bytes 保留在build.sbt 中:

proguardOptions ++=
    "-dontwarn android.test.**" ::
    "-dontwarn org.scalatest.**" ::
    "-dontwarn scala.xml.**" ::
    "-dontwarn slick.jdbc.**" ::
    "-dontwarn org.slf4j.**" ::
    "-dontwarn org.junit.**" ::
    "-dontobfuscate" ::
    "-dontnote ** "  ::
    "-dontpreverify" ::
    "-optimizations !code/simplification/arithmetic" ::
    "-keep class android.support.test.** { *; }" ::
    "-keep class scala.reflect.ScalaSignature.** {*;}" ::
    "-keep class com.mypackage.** { *; }" ::
    "-keep class * extends junit.framework.TestCase { *; }" ::
    "-keepclasseswithmembers class * { @org.junit.** *; }" ::
    "-keepclassmembers class * { ** bytes();}"::
    "-keep class android.support.test.** { *; }" ::
    "-keep class org.junit.** { *; }" ::
    Nil

但它似乎没有帮助。

完整的堆栈跟踪:

 E  ( 9562) TestExecutor: Fatal exception when running tests
 E  ( 9562) TestExecutor: java.lang.IncompatibleClassChangeError: Couldn't find scala.reflect.ScalaSignature.bytes
 E  ( 9562) TestExecutor:       at libcore.reflect.AnnotationAccess.toAnnotationInstance(AnnotationAccess.java:659)
 E  ( 9562) TestExecutor:       at libcore.reflect.AnnotationAccess.annotationSetToAnnotations(AnnotationAccess.java:633)
 E  ( 9562) TestExecutor:       at libcore.reflect.AnnotationAccess.getDeclaredAnnotations(AnnotationAccess.java:161)
 E  ( 9562) TestExecutor:       at libcore.reflect.AnnotationAccess.getAnnotations(AnnotationAccess.java:111)
 E  ( 9562) TestExecutor:       at java.lang.Class.getAnnotations(Class.java:369)
 E  ( 9562) TestExecutor:       at org.junit.runner.Description.createSuiteDescription(Description.java:124)
 E  ( 9562) TestExecutor:       at org.junit.internal.runners.ErrorReportingRunner.getDescription(ErrorReportingRunner.java:28)
 E  ( 9562) TestExecutor:       at org.junit.runners.Suite.describeChild(Suite.java:123)
 E  ( 9562) TestExecutor:       at org.junit.runners.Suite.describeChild(Suite.java:27)
 E  ( 9562) TestExecutor:       at org.junit.runners.ParentRunner.shouldRun(ParentRunner.java:434)
 E  ( 9562) TestExecutor:       at org.junit.runners.ParentRunner.filter(ParentRunner.java:382)
 E  ( 9562) TestExecutor:       at org.junit.runner.manipulation.Filter.apply(Filter.java:97)
 E  ( 9562) TestExecutor:       at android.support.test.internal.runner.TestRequestBuilder$LenientFilterRequest.getRunner(TestRequestBuilder.java:381)
 E  ( 9562) TestExecutor:       at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
 E  ( 9562) TestExecutor:       at android.support.test.internal.runner.TestExecutor.execute(TestExecutor.java:59)
 E  ( 9562) TestExecutor:       at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:262)
 E  

【问题讨论】:

    标签: android scala proguard scala-reflect sbt-android-plugin


    【解决方案1】:
    -keep class scala.reflect.ScalaSignature {*;}
    

    没有**

    【讨论】:

      猜你喜欢
      • 2019-07-09
      • 2015-07-22
      • 2019-03-19
      • 1970-01-01
      • 2012-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多