无法实例化 activity ... 未在路径上找到 class WelcomeActivity:DexPathList(即时 运行)
Unable to instantiate activity ... Didn't find class WelcomeActivity on path: DexPathList (with instant run)
几天来我一直在为我的项目苦苦挣扎,突然从一个 build/deploy 到另一个我开始遇到以下异常。没有任何更新或更改,我只是想 运行 应用发生时在不同的设备上(就像其他任何一天一样)。
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.my.app.flavor.debug/com.my.app.ui.activity.WelcomeActivity}: java.lang.ClassNotFoundException: Didn't find class "com.my.app.flavor.ui.activity.WelcomeActivity" on path: DexPathList[[zip file "/data/app/com.my.app.flavor.debug-2/base.apk"],nativeLibraryDirectories=[/data/app/**com.my.app.flavor.**debug-2/lib/x86, /data/app/com.my.app.flavor.debug-2/base.apk!/lib/x86, /vendor/lib, /system/lib]]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2327)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.my.app.ui.activity.WelcomeActivity" on path: DexPathList[[zip file "/data/app/com.my.app.flavor.debug-2/base.apk"],nativeLibraryDirectories=[/data/app/com.my.app.flavor.debug-2/lib/x86, /data/app/com.my.app.flavor.debug-2/base.apk!/lib/x86, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at android.app.Instrumentation.newActivity(Instrumentation.java:1067)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2317)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Suppressed: java.lang.ClassNotFoundException: com.my.app.ui.activity.WelcomeActivity
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 12 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
Debug 构建在我的所有 3 台设备(Android 5.0.2、6.0.1 和 7.0)和模拟器上无法 deploy/start。
运行 如果我 select 有两个或多个部署目标,但不是只有一个(因为即时 运行 被多个目标禁用)。
Debug 和 运行 在 instant 运行 被禁用时工作
我的项目有多种风格和 applicationIds(如 )。 None 的 gradle 个文件在错误发生时被更改,清单也没有。
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:installLocation="auto"
package="com.my.app">
<permission
android:name="${applicationId}.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<!-- PROTECTION_NORMAL -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<!-- PROTECTION_DANGEROUS -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<!-- Protection unknown -->
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<uses-feature android:name="android.hardware.location" android:required="true" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity android:name="net.hockeyapp.android.UpdateActivity" />
<activity
android:name=".ui.activity.WelcomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ui.activity.StartActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" />
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" />
<activity
android:name="com.facebook.LoginActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.NotificationActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.OtherActivity"
android:label="@string/cards_register_card"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.OneMoreActivity"
android:label="@string/a_title"
android:parentActivityName=".ui.activity.OtherActivity"
android:screenOrientation="portrait">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".ui.activity.OtherActivity" />
</activity>
<service android:name=".service.WearableListenerService">
<intent-filter>
<action android:name="com.google.android.gms.wearable.DATA_CHANGED" />
<action android:name="com.google.android.gms.wearable.MESSAGE_RECEIVED" />
<data
android:host="*"
android:pathPrefix="/path"
android:scheme="wear" />
</intent-filter>
</service>
<!-- GCM START -->
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="${applicationId}" />
</intent-filter>
</receiver>
<service
android:name=".service.PushListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
<service
android:name=".service.PushInstanceIDListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID" />
</intent-filter>
</service>
<service
android:name=".service.PushRegistrationIntentService"
android:exported="false"></service>
<!-- GCM END -->
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_api_key" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
<!-- Register AnalyticsReceiver and AnalyticsService to support background dispatching on non-Google Play devices -->
<receiver
android:name="com.google.android.gms.analytics.AnalyticsReceiver"
android:enabled="true">
<intent-filter>
<action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />
</intent-filter>
</receiver>
<service
android:name="com.google.android.gms.analytics.AnalyticsService"
android:enabled="true"
android:exported="false" />
</application>
到目前为止,我已经尝试了以下方法:
- 干净,干净,干净,更干净
- 删除所有 /build 文件夹
- 正在重新启动 Android Studio (2.2)、我的电脑和所有设备
- 正在所有设备和模拟器上卸载我的所有应用程序
- 尝试使用启动选项下指定的activity创建新的运行配置(有时有效当 运行 在单个部署目标上,但从未处于 调试 模式时)
- 运行 即时 运行 停用后跟一个 运行
激活
- 重新安装 Android Studio
非常感谢任何帮助它在即时 运行 中再次工作的帮助!
这似乎在启用即时 运行 时不时发生(尽管在 Android Studio 的后期更新中并不经常发生)。只需禁用 instant 运行、运行 应用程序,再次启用 instant 运行。
希望instant运行会越来越好
(对我来说,在分支之间切换似乎更容易触发此问题。)
看来构建工具版本24.0.2有bug,我升级到24.0.3终于可以用了!
buildToolsVersion '24.0.3'
每次回滚到 24.0.2 都会重现该问题。
可能有多种原因。
如果您的问题是当它从调试 apk 文件安装时无法在设备上 运行 应用程序并且错误日志显示:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo
java.lang.ClassNotFoundException:Didn't find class "com.b.MainActivity" on path: DexPathList
然后在任何设备上获得 签名的 apk 和 运行,它将 运行。
Android Studio > 构建 > 生成签名 APK
几天来我一直在为我的项目苦苦挣扎,突然从一个 build/deploy 到另一个我开始遇到以下异常。没有任何更新或更改,我只是想 运行 应用发生时在不同的设备上(就像其他任何一天一样)。
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.my.app.flavor.debug/com.my.app.ui.activity.WelcomeActivity}: java.lang.ClassNotFoundException: Didn't find class "com.my.app.flavor.ui.activity.WelcomeActivity" on path: DexPathList[[zip file "/data/app/com.my.app.flavor.debug-2/base.apk"],nativeLibraryDirectories=[/data/app/**com.my.app.flavor.**debug-2/lib/x86, /data/app/com.my.app.flavor.debug-2/base.apk!/lib/x86, /vendor/lib, /system/lib]]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2327)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.my.app.ui.activity.WelcomeActivity" on path: DexPathList[[zip file "/data/app/com.my.app.flavor.debug-2/base.apk"],nativeLibraryDirectories=[/data/app/com.my.app.flavor.debug-2/lib/x86, /data/app/com.my.app.flavor.debug-2/base.apk!/lib/x86, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at android.app.Instrumentation.newActivity(Instrumentation.java:1067)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2317)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Suppressed: java.lang.ClassNotFoundException: com.my.app.ui.activity.WelcomeActivity
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 12 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
Debug 构建在我的所有 3 台设备(Android 5.0.2、6.0.1 和 7.0)和模拟器上无法 deploy/start。 运行 如果我 select 有两个或多个部署目标,但不是只有一个(因为即时 运行 被多个目标禁用)。 Debug 和 运行 在 instant 运行 被禁用时工作
我的项目有多种风格和 applicationIds(如
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:installLocation="auto"
package="com.my.app">
<permission
android:name="${applicationId}.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<!-- PROTECTION_NORMAL -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<!-- PROTECTION_DANGEROUS -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<!-- Protection unknown -->
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<uses-feature android:name="android.hardware.location" android:required="true" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity android:name="net.hockeyapp.android.UpdateActivity" />
<activity
android:name=".ui.activity.WelcomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ui.activity.StartActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" />
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" />
<activity
android:name="com.facebook.LoginActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.NotificationActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.OtherActivity"
android:label="@string/cards_register_card"
android:screenOrientation="portrait" />
<activity
android:name=".ui.activity.OneMoreActivity"
android:label="@string/a_title"
android:parentActivityName=".ui.activity.OtherActivity"
android:screenOrientation="portrait">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".ui.activity.OtherActivity" />
</activity>
<service android:name=".service.WearableListenerService">
<intent-filter>
<action android:name="com.google.android.gms.wearable.DATA_CHANGED" />
<action android:name="com.google.android.gms.wearable.MESSAGE_RECEIVED" />
<data
android:host="*"
android:pathPrefix="/path"
android:scheme="wear" />
</intent-filter>
</service>
<!-- GCM START -->
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="${applicationId}" />
</intent-filter>
</receiver>
<service
android:name=".service.PushListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
<service
android:name=".service.PushInstanceIDListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID" />
</intent-filter>
</service>
<service
android:name=".service.PushRegistrationIntentService"
android:exported="false"></service>
<!-- GCM END -->
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_api_key" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
<!-- Register AnalyticsReceiver and AnalyticsService to support background dispatching on non-Google Play devices -->
<receiver
android:name="com.google.android.gms.analytics.AnalyticsReceiver"
android:enabled="true">
<intent-filter>
<action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />
</intent-filter>
</receiver>
<service
android:name="com.google.android.gms.analytics.AnalyticsService"
android:enabled="true"
android:exported="false" />
</application>
到目前为止,我已经尝试了以下方法:
- 干净,干净,干净,更干净
- 删除所有 /build 文件夹
- 正在重新启动 Android Studio (2.2)、我的电脑和所有设备
- 正在所有设备和模拟器上卸载我的所有应用程序
- 尝试使用启动选项下指定的activity创建新的运行配置(有时有效当 运行 在单个部署目标上,但从未处于 调试 模式时)
- 运行 即时 运行 停用后跟一个 运行 激活
- 重新安装 Android Studio
非常感谢任何帮助它在即时 运行 中再次工作的帮助!
这似乎在启用即时 运行 时不时发生(尽管在 Android Studio 的后期更新中并不经常发生)。只需禁用 instant 运行、运行 应用程序,再次启用 instant 运行。
希望instant运行会越来越好
(对我来说,在分支之间切换似乎更容易触发此问题。)
看来构建工具版本24.0.2有bug,我升级到24.0.3终于可以用了!
buildToolsVersion '24.0.3'
每次回滚到 24.0.2 都会重现该问题。
可能有多种原因。 如果您的问题是当它从调试 apk 文件安装时无法在设备上 运行 应用程序并且错误日志显示:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo java.lang.ClassNotFoundException:Didn't find class "com.b.MainActivity" on path: DexPathList
然后在任何设备上获得 签名的 apk 和 运行,它将 运行。
Android Studio > 构建 > 生成签名 APK