ART单元测试失败,Dalvik工作正常

时间:2014-11-11 20:33:06

标签: android dalvik art-runtime

我已经开发了一段时间的应用程序(over here),我试图在我的Android设备和模拟器上进行两项测试。

目前我已经在Travis上进行了构建,所有测试都运行良好。另外,我有一个本地模拟器设置,运行一切都很好。我的物理设备(Moto X)也运行良好,但只有在Dalvik上运行时。一旦我切换到ART,我就会收到以下错误:

11-11 15:28:54.013    6259-6259/org.bspeice.minimalbible E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: org.bspeice.minimalbible, PID: 6259
    java.lang.NoClassDefFoundError: org.jdom2.xpath.jaxen.JDOMCoreNavigator
            at java.lang.Class.classForName(Native Method)
            at java.lang.Class.forName(Class.java:305)
            at android.test.ClassPathPackageInfoSource.createPackageInfo(ClassPathPackageInfoSource.java:88)
            at android.test.ClassPathPackageInfoSource.access$000(ClassPathPackageInfoSource.java:39)
            at android.test.ClassPathPackageInfoSource$1.load(ClassPathPackageInfoSource.java:50)
            at android.test.ClassPathPackageInfoSource$1.load(ClassPathPackageInfoSource.java:47)
            at android.test.SimpleCache.get(SimpleCache.java:31)
            at android.test.ClassPathPackageInfoSource.getPackageInfo(ClassPathPackageInfoSource.java:72)
            at android.test.ClassPathPackageInfo.getSubpackages(ClassPathPackageInfo.java:48)
            at android.test.ClassPathPackageInfo.addTopLevelClassesTo(ClassPathPackageInfo.java:61)
            at android.test.ClassPathPackageInfo.getTopLevelClassesRecursive(ClassPathPackageInfo.java:55)
            at android.test.suitebuilder.TestGrouping.testCaseClassesInPackage(TestGrouping.java:156)
            at android.test.suitebuilder.TestGrouping.addPackagesRecursive(TestGrouping.java:117)
            at android.test.suitebuilder.TestSuiteBuilder.includePackages(TestSuiteBuilder.java:102)
            at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:366)
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4400)
            at android.app.ActivityThread.access$1500(ActivityThread.java:139)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1270)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5086)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)

如果有帮助的话,会有here的完整会话跟踪。

所以我的问题是:是否有任何理由这将成为ART而不是Dalvik的问题?我根本没有改变应用程序构建过程,唯一似乎有所作为的变量是Dalvik / ART。应用程序本身运行正常,它只是有错误的测试。

1 个答案:

答案 0 :(得分:0)

看起来ART没有找到你的类,抛出了ClassNotFoundException。我不熟悉java或cpp,但在我对ART的阅读中,它在语法上要严格得多。 Dalvik会接受点或斜线作为分隔符,ART仅斜线等等。我有很多东西在Dalvik上运行正常,但在ART / Android-5.0.x上掉线并死掉。你自己解决了这个问题吗?在接下来的几周内,我将尝试确定我的应用程序出了什么问题,但我怀疑这是ART正在进行的更积极的内存管理垃圾收集,而不是Dalvik。如果您已解决问题,请发布说明,说明您的操作。