【问题标题】:[Android Studio]java.lang.RuntimeException: Unable to instantiate activity ComponentInfo java.lang.ClassNotFoundException: on path: DexPathList[Android Studio]java.lang.RuntimeException:无法实例化活动 ComponentInfo java.lang.ClassNotFoundException:在路径:DexPathList
【发布时间】:2017-06-25 16:12:30
【问题描述】:

我有一个应用程序,它可以在 android Lollipop 及更高版本中运行,如果我在 android Kitkat 设备中安装了该应用程序,应用程序会崩溃并显示如下错误:

java.lang.RuntimeException:无法实例化活动 ComponentInfo{com.SplashActivity}:java.lang.ClassNotFoundException:在路径上找不到类“com.SplashActivity”:DexPathList [[zip 文件“/data/app/ com.partner-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.partner-1, /system/lib]] 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2131) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271) 在 android.app.ActivityThread.access$800(ActivityThread.java:144) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:136) 在 android.app.ActivityThread.main(ActivityThread.java:5146) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566) 在 dalvik.system.NativeStart.main(本机方法) 原因:java.lang.ClassNotFoundException:在路径上找不到类“com.SplashActivity”:DexPathList[[zip file“/data/app/com.partner-1.apk”],nativeLibraryDirectories=[/data/app -lib/com.partner-1, /system/lib]] 在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:497) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:457) 在 android.app.Instrumentation.newActivity(Instrumentation.java:1061) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2122) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2271) 在 android.app.ActivityThread.access$800(ActivityThread.java:144) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:136) 在 android.app.ActivityThread.main(ActivityThread.java:5146) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566) 在 dalvik.system.NativeStart.main(本机方法)

我尝试了很多都无法修复它,大多数答案都是针对eclipse项目的。

【问题讨论】:

标签: android


【解决方案1】:

api 21 on 的原因是:

Android 5.0 (API level 21) and higher uses a runtime called ART which natively supports loading multiple DEX files from APK files. ART performs pre-compilation at app install time which scans for classesN.dex files and compiles them into a single .oat file for execution by the Android device. Therefore, if your minSdkVersion is 21 or higher, you do not need the multidex support library.

来自本指南:https://developer.android.com/studio/build/multidex.html

我通过这样命名我的类解决了类未找到错误:

[Activity(Name = "somepackage.custombuttonrenderer")]
public class CustomButtonRenderer: ButtonRenderer
{ }

这是我的回答:Why is my custom ButtonRenderer not working?

【讨论】:

    【解决方案2】:

    这对我有用: 将此添加到您的应用程序类中。

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(getBaseContext());
    }
    

    说明: Android 应用 (APK) 文件包含 Dalvik 可执行 (DEX) 文件形式的可执行字节码文件,其中包含用于运行您的应用的编译代码。 Dalvik Executable 规范将单个 DEX 文件中可以引用的方法总数限制为 65,536

    Android 5.0(API 级别 21)之前的平台版本使用 Dalvik 运行时来执行应用代码。默认情况下,Dalvik 将应用程序限制为每个 APK 单个 classes.dex 字节码文件。为了绕过这个限制,你可以添加multidex支持

    【讨论】:

      【解决方案3】:

      更新您的应用级 build.gradle 文件:

      implementation 'com.android.support:multidex:1.0.0'
      

      然后更新你的应用程序类:

      @Override
      public void onCreate() {
          super.onCreate();
          MultiDex.install(this);
      }
      

      【讨论】:

        猜你喜欢
        • 2016-11-17
        • 2015-03-04
        • 2013-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-08
        • 1970-01-01
        相关资源
        最近更新 更多