繁体   English   中英

VM具有multidex支持,MultiDex支持库已禁用。 问题

[英]VM has multidex support, MultiDex support library is disabled. issue

我已经尝试了Internet中的所有解决方案,但是其中任何一种都可以,这是我的荣幸:

android {
    compileSdkVersion 25
    buildToolsVersion '25.0.0'

defaultConfig {
    applicationId "com.rocketjourney"
    minSdkVersion 21
    targetSdkVersion 24
    versionCode 68
    versionName "4.41"
    multiDexEnabled true
    vectorDrawables.useSupportLibrary = true
    testInstrumentationRunner "com.rocketjourney.helpers.CustomTestRunner"
}

configurations.all {
    resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
    resolutionStrategy.force 'com.squareup.okio:okio:1.13.0'
    resolutionStrategy.force 'com.squareup.okhttp3:okhttp:3.8.0'
}

dexOptions {
    javaMaxHeapSize "4g"
    jumboMode = true
}`

repositories {
    mavenCentral()
    maven { url 'http://oss.jfrog.org/artifactory/oss-snapshot-local' }
    maven { url "https://jitpack.io" }
    flatDir { dirs 'libs' }
    flatDir { dirs '../aars' }
    maven { url 'https://maven.fabric.io/public' }
}

dependencies {
    compile('com.crashlytics.sdk.android:crashlytics:2.7.1@aar') { transitive = true; }
    etc...
}`

我的清单看起来像这样:

<application
    android:name="com.rocketjourney.RJApplication"
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"

在我的RJApplication.class我有以下代码:

public class RJApplication extends Application {

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

但是我现在的错误是这样的:

11-08 11:54:36.494 5743-5743 /? E / AndroidRuntime:致命例外:主进程:com.rocketjourney,PID:5743 java.lang.NoClassDefFoundError:无法解决以下问题:Lio / fabric / sdk / android / services / common / FirebaseInfo; 在com.crashlytics.android.CrashlyticsInitProvider.onCreate(CrashlyticsInitProvider.java:22)在android.content.ContentProvider.attachInfo(ContentProvider.java:1696)在android.content.ContentProvider.attachInfo(ContentProvider.java:1671)在android。 android.app.ActivityThread.installContentProviders(ActivityThread.java:4594)位于android.app.ActivityThread.handleBindApplication(ActivityThread.java:4534)位于android.app.ActivityThread.access处的app.ActivityThread.installProvider(ActivityThread.java:4999) android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1364)处$ 1500(ActivityThread.java:151)android.os.Looper.loop(Looper)处android.os.Handler.dispatchMessage(Handler.java:102) .java:135),位于android.app.ActivityThread.main(ActivityThread.java:5254),位于java.lang.reflect.Method.invoke(本机方法),位于java.lang.reflect.Method.invoke(Method.java:372 )在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:903)在com.android.internal.os.ZygoteInit.main(Zygo teInit.java:698)由以下原因引起:java.lang.ClassNotFoundException:在路径:DexPathList [[zip file“ / data / app / com]上找不到类” io.fabric.sdk.android.services.common.FirebaseInfo“ .rocketjourney-2 / base.apk“],nativeLibraryDirectories = [/ data / app / com.rocketjourney-2 / lib / x86,/ vendor / lib,/ system / lib]],位于dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader .java:56),位于java.lang.ClassLoader.loadClass(ClassLoader.java:511),位于com.crashlytics.android.CrashlyticsInitProvider.onCreate(CrashlyticsInitProvider.java:java.lang.ClassLoader.loadClass(ClassLoader.java:469)处: 22)在android.content.ContentProvider.attachInfo(ContentProvider.java:1696)在android.content.ContentProvider.attachInfo(ContentProvider.java:1671)在android.app.ActivityThread.installProvider(ActivityThread.java:4999)在android。 app.ActivityThread.installContentProviders(ActivityThread.java:4594)在android.app.ActivityThread.handleBindApplication(ActivityThread.java:4534)在android.app.ActivityThread.access $ 15 android.os.Looper.loop(Looper)上的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1364)上的00(ActivityThread.java:151)android.os.Handler.dispatchMessage(Handler.java:102)上的android.os.Handler.dispatchMessage(Handler.java:102) .java:135),位于android.app.ActivityThread.main(ActivityThread.java:5254),位于java.lang.reflect.Method.invoke(本机方法),位于java.lang.reflect.Method.invoke(Method.java:372 )com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:903)com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)禁止显示:java.lang.ClassNotFoundException:io java.lang.BootClassLoader.findClass(ClassLoader.java:781)的java.lang.Class.classForName(本机方法)的.fabric.sdk.android.services.common.FirebaseInfo,java.lang.BootClassLoader.loadClass(ClassLoader。 java:lang.ClassLoader.loadClass(ClassLoader.java:504)上的java:841)...其他16个原因:java.lang.NoClassDefFoundError:使用引导类加载器找不到类; 没有可用的堆栈

希望你们能帮助我,我将非常感谢!

如果您的minSdkVersion为21,则无需添加multidex支持。

文档中

对Android 5.0及更高版本的Multidex支持

Android 5.0(API级别21)及更高版本使用称为ART的运行时,该运行时本机支持从APK文件加载多个DEX文件。 ART在应用程序安装时执行预编译,该程序将扫描classesN.dex文件并将其编译为单个.oat文件,以供Android设备执行。 因此,如果您的minSdkVersion为21或更高,则不需要multidex支持库。

因此,您需要从build.gradle中删除compile 'com.android.support:multidex:1.0.1' 然后,您需要使用Application扩展您的RJApplication。 同时删除MultiDex.install(this); 从您的attachBaseContext()

您需要做的就是通过添加multiDexEnabled truemultiDexEnabled true设置为multiDexEnabled true 请参考配置您的应用以使用多dex

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM