Android 支持 v7 TestActivity 的 ClassNotFoundException

Android ClassNotFoundException for Support v7 TestActivity

我刚刚收到了一个应用程序的崩溃报告。我现在没有完整的堆栈跟踪,但它来自 ActivityLoader.performLaunchActivity

它试图启动的 class 是 android.support.v7.widget.TestActivity。我当然从来没有尝试在我的应用程序的任何地方加载这个 activity 。

该设备是 Samsung Galaxy Nexus 运行 4.1.1 root。堆栈跟踪对我来说看起来很正常(没有 xposed 或类似的东西)。

有人见过这样的东西吗?

编辑: 这是堆栈跟踪

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.cpsolutions.contacts/android.support.v7.widget.TestActivity}: java.lang.ClassNotFoundException: android.support.v7.widget.TestActivity
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1998)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2099)
    at android.app.ActivityThread.access0(ActivityThread.java:145)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
    at android.os.Handler.dispatchMessage(Handler.java:119)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4873)
    at java.lang.reflect.Method.invokeNative(Method.java)
    at java.lang.reflect.Method.invoke(Method.java:528)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    at dalvik.system.NativeStart.main(NativeStart.java)
    Caused by: java.lang.ClassNotFoundException: android.support.v7.widget.TestActivity
      at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:72)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:524)
      at java.lang.ClassLoader._logged_loadClass(ClassLoader.java:484)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:476)
      at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1989)
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2099)
      at android.app.ActivityThread.access0(ActivityThread.java:145)
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
      at android.os.Handler.dispatchMessage(Handler.java:119)
      at android.os.Looper.loop(Looper.java:137)
      at android.app.ActivityThread.main(ActivityThread.java:4873)
      at java.lang.reflect.Method.invokeNative(Method.java)
      at java.lang.reflect.Method.invoke(Method.java:528)
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
      at dalvik.system.NativeStart.main(NativeStart.java)

Android issue tracker 中发布后,我收到回复说这是 Gradle 的一个问题,该问题已经解决,并且会反映在支持库中重新更新。

今天早上,我的 BugTracker 系统在几秒钟内收到了几个设备的相同异常

  • Google Nexus 5 与 Android 4.4.2
  • Galaxy Nexus Android 4.1.1

看起来有人提取了 APK 并安装在某些模拟器中(我怀疑这也是因为报告的屏幕尺寸是 480x800,这不是 nexus 5 的屏幕尺寸。

所以我认为这不是真正的异常(或者至少是我们的应用程序抛出的异常),而是某人所做的一些测试。

收到的异常是

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{it.frusso.mdpalette/android.support.v7.widget.TestActivity}: java.lang.ClassNotFoundException: Didn't find class "android.support.v7.widget.TestActivity" on path: DexPathList[[zip file "/data/app/it.frusso.mdpalette-1.apk"],nativeLibraryDirectories=[/data/app-lib/it.frusso.mdpalette-1, /vendor/lib, /system/lib]]
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2135)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2259)
    at android.app.ActivityThread.access0(ActivityThread.java:149)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
    at android.os.Handler.dispatchMessage(Handler.java:122)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5122)
    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:779)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v7.widget.TestActivity" on path: DexPathList[[zip file "/data/app/it.frusso.mdpalette-1.apk"],nativeLibraryDirectories=[/data/app-lib/it.frusso.mdpalette-1, /vendor/lib, /system/lib]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:67)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    at java.lang.ClassLoader._logged_loadClass(ClassLoader.java:480)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:472)
    at android.app.Instrumentation.newActivity(Instrumentation.java:1066)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2126)
    ... 11 more
java.lang.ClassNotFoundException: Didn't find class "android.support.v7.widget.TestActivity" on path: DexPathList[[zip file "/data/app/it.frusso.mdpalette-1.apk"],nativeLibraryDirectories=[/data/app-lib/it.frusso.mdpalette-1, /vendor/lib, /system/lib]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:67)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    at java.lang.ClassLoader._logged_loadClass(ClassLoader.java:480)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:472)
    at android.app.Instrumentation.newActivity(Instrumentation.java:1066)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2126)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2259)
    at android.app.ActivityThread.access0(ActivityThread.java:149)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
    at android.os.Handler.dispatchMessage(Handler.java:122)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5122)
    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:779)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
    at dalvik.system.NativeStart.main(Native Method)

我也收到了android.view.WindowManager.BadTokenException