【发布时间】:2016-11-29 21:36:25
【问题描述】:
尝试在 Android Studio 2.2.2 中构建和运行一个可以在 Eclipse 中运行的应用。当我尝试调试它(在三星 Galaxy 选项卡 4 上)时,我得到:(顺便说一句,有什么方法可以让它在 StackOverflow 中更具可读性?)
I/System.out:等待调试器解决... I/System.out:调试器 已解决 (1484) I/InstantRun:Instant Run Runtime 已启动。安卓 包是 com.xxxxxxx.remote,真正的应用程序类是空的。 W/InstantRun:没有即时运行 dex 文件添加到类路径 D/AndroidRuntime:关闭 VM E/AndroidRuntime:致命异常: 主要的 进程:com.xxxxxxx.remote,PID:1925 java.lang.RuntimeException:无法实例化活动 组件信息{com.xxxxxxx.remote/com.xxxxxxx.remote.RemoteControlActivity}: java.lang.ClassNotFoundException:找不到类 路径上的“com.xxxxxxx.remote.RemoteControlActivity”:DexPathList[[zip 文件 "/data/app/com.xxxxxxx.remote-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /系统/库]] 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2644) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2867) 在 android.app.ActivityThread.access$900(ActivityThread.java:181) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1476) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:145) 在 android.app.ActivityThread.main(ActivityThread.java:6134) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 引起:java.lang.ClassNotFoundException:在路径上找不到类“com.xxxxxxx.remote.RemoteControlActivity”: DexPathList[[压缩文件 "/data/app/com.xxxxxxx.remote-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /系统/库]] 在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:511) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:469) 在 android.app.Instrumentation.newActivity(Instrumentation.java:1079) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2634) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2867)
...等等... 我已经“xxxxx”出了一个专有名称。 real application class is null和No instant run dex files added to classpath是什么意思?我还在很多类似的问题中看到了对“无法实例化活动 ComponentInfo”的引用 - 这是什么意思?
它找不到的活动在清单中声明为...
<activity android:launchMode="singleTask"
android:label="@string/app_name"
android:windowNoTitle="false"
android:configChanges="orientation"
android:screenOrientation="landscape"
android:name=".RemoteControlActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
我什至不能在 Activity 开始时打断点,那我该如何调试呢?
【问题讨论】:
-
您可以禁用 InstantRun 并查看问题是否仍然存在。
-
我发现有用的一项检查是 CTRL+单击活动名称(在本例中为 .RemoteControlActivity)。如果 IDE 没有自动打开该类,则说明名称解析有问题。
-
@Doron Yakovlev-Golani Disabling Instant Run 修复了它 - 我现在可以在 OnCreate() 处断点。根据您的评论,我阅读了有关 Instant Run 的文档,但我仍然不明白它的作用,但显然它已启用。如果您想将此作为答案发布,我可以给您一个代表点并将问题标记为“已回答”。
-
这能回答你的问题吗? Didn't find class on path: DexPathList?