java.lang.ClassNotFoundException: 未在路径 DexPathList 上找到 class,更新 sdk 后

java.lang.ClassNotFoundException: Didn't find class on path: DexPathList , After updating sdk

大家好我的应用程序直到昨天都运行良好,我昨天更新了我的 SDK,它首先开始出错它给出了一个错误

No resource found at values v24 ....

像这样的事情我搜索并通过更改 build.gradle

中的以下行解决了它
compileSdkVersion 25
buildToolsVersion '25.0.2'

现在错误消失了 运行在 更高 android 版本 7.1.1[=42 中完全没问题=] 但是当我 运行 在 android 的较低版本 中时,它给出以下 error

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.wowio.ebookreader, PID: 15469
                  java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.wowio.ebookreader/com.eminosoft.ebookread.activity.SplashScreenActivity}: java.lang.ClassNotFoundException: Didn't find class "com.eminosoft.ebookread.activity.SplashScreenActivity" on path: DexPathList[[zip file "/data/app/com.wowio.ebookreader-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.wowio.ebookreader-1, /vendor/lib, /system/lib]]
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2378)
                      at android.app.ActivityThread.access0(ActivityThread.java:155)
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1244)
                      at android.os.Handler.dispatchMessage(Handler.java:102)
                      at android.os.Looper.loop(Looper.java:136)
                      at android.app.ActivityThread.main(ActivityThread.java:5433)
                      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:1268)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
                      at dalvik.system.NativeStart.main(Native Method)
                   Caused by: java.lang.ClassNotFoundException: Didn't find class "com.eminosoft.ebookread.activity.SplashScreenActivity" on path: DexPathList[[zip file "/data/app/com.wowio.ebookreader-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.wowio.ebookreader-1, /vendor/lib, /system/lib]]
                      at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
                      at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
                      at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
                      at android.app.Instrumentation.newActivity(Instrumentation.java:1068)
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2186)
                      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2378) 
                      at android.app.ActivityThread.access0(ActivityThread.java:155) 
                      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1244) 
                      at android.os.Handler.dispatchMessage(Handler.java:102) 
                      at android.os.Looper.loop(Looper.java:136) 
                      at android.app.ActivityThread.main(ActivityThread.java:5433) 
                      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:1268) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
                      at dalvik.system.NativeStart.main(Native Method) 

已经尝试以下事情

1.Clean 项目

2.invalidate缓存/重启

3.The 删除设备上的应用程序

已经看过这些问题Question 1 , Question 2没有任何效果。我该如何解决这个问题?

如果你有什么需要我会及时更新

我的build.gradle文件

 apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion '25.0.2'

    defaultConfig {
        applicationId "com.wowio.ebookreader"
        minSdkVersion 14
        targetSdkVersion 23
        multiDexEnabled true

    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
    dexOptions {
        javaMaxHeapSize "4g"
    }
}

dependencies {

    compile 'com.android.support:appcompat-v7:+'
    compile 'com.google.android.gms:play-services:+'
    compile 'com.android.support:multidex:1.0.1'
     // the are many more dependencies i removed to decrease size

    }

写一个 class EnableMultiDex 如下所示

public class EnableMultiDex extends MultiDexApplication {
    private static EnableMultiDex enableMultiDex;
    public static Context context;

    public EnableMultiDex(){
        enableMultiDex=this;
    }

    public static EnableMultiDex getEnableMultiDexApp() {
        return enableMultiDex;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        context = getApplicationContext();

    }
}

并在 AndroidManifest.xml 中将此 class 写入应用程序标签

 <application
    android:name="YourPakageName.EnableMultiDex"
    android:hardwareAccelerated="true"
    android:icon="@drawable/launch_logo"
    android:label="@string/app_name"
    android:largeHeap="true"
    tools:node="replace">

是的,上面的答案可能是正确的我没有按原样尝试。但我以相反的方式解决了 "You remove the instant run option in the settings of android studio"

转到 --> 文件菜单 --> select 设置 --> select 构建、执行、部署 -->select 即时 运行 -- > 取消勾选 "enable instant run".

它对我有用。但一些应用程序如 google 地图集成应用程序需要 Instant 运行.

同样的错误发生在我身上,因为我安装了在 outputs\apk 文件夹中创建的调试 apk,它变得更小并且缺少 类 因为它可能是瞬间的结果 运行。 因此,与其关闭即时 运行,不如关闭构建 APK(通过菜单中的构建->构建 apk)并使用这个。

就我而言,我的项目在以下时间后再次开始工作:

  • 从模拟器(或真实设备)卸载我的项目
  • 清理项目
  • 制作项目

禁用即时 运行 对我有用 我认为出现此问题是因为在使用安装 运行(减少 apk 大小)

构建时缺少某些 class