[Android Studio 3.6正确实施时出现MultiDex问题

问题描述 投票:0回答:1

我将Android Studio更新为3.6,在一个项目中,我遇到了MultiDex的问题,并且在Calligraphy和另一个库中不断出现此错误:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.tivasot.book, PID: 7730
    java.lang.NoClassDefFoundError: Failed resolution of: Luk/co/chrisjenx/calligraphy/R$attr;
        at uk.co.chrisjenx.calligraphy.CalligraphyConfig$Builder.<init>(CalligraphyConfig.java:194)
        at com.tivasot.book.Book.onCreate(Book.java:33)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1154)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5926)
        at android.app.ActivityThread.access$1100(ActivityThread.java:201)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1657)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6724)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:495)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "uk.co.chrisjenx.calligraphy.R$attr" on path: DexPathList[[zip file "/data/app/com.tivasot.book-LOo7ps1gQoepvwm4tMW5tQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.tivasot.book-LOo7ps1gQoepvwm4tMW5tQ==/lib/arm64, /data/app/com.tivasot.book-LOo7ps1gQoepvwm4tMW5tQ==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)

我尝试过的:

  • 我设置了minSdkVersion 21并运行没有Multidex依赖项的项目
  • 我尝试从google's official guide添加依赖项
  • 我尝试覆盖MultiDexApplication
  • 我在覆盖MultiDex.install(this);时尝试了Application
  • 我尝试创建一个带有'multidex-config.txt'Luk/co/chrisjenx/calligraphy/R文件,并将其设置在gradle文件的buildTypes中-(我可能没有正确执行此操作]
  • 我尝试清洁和重建
  • 我每次尝试都使缓存无效,删除了.idea文件夹和.i​​ml文件
  • 我什至尝试删除所有Multidex依赖项,并设置multiDexEnabled false-可以编译,但是我仍然得到相同的错误日志。

这是我的gradle文件:

android {
    compileSdkVersion 29
    defaultConfig {
        applicationId "the.app.id"
        minSdkVersion 21
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        vectorDrawables.useSupportLibrary = true
        multiDexEnabled false
        renderscriptSupportModeEnabled true
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            multiDexKeepFile file('multidex-config.txt')
        }
        debug {
            multiDexKeepFile file('multidex-config.txt')
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    android.applicationVariants.all { variant ->
        variant.outputs.all {
            def appName = "Book"
            outputFileName = appName + ".apk"
        }
    }

    lintOptions {
        abortOnError false
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'androidx.multidex:multidex:2.0.1'
    ...
}

我还可以做些什么?

编辑:

我认为新的gradle版本存在一个错误。我在项目的gradle文件中从3.6.0降级为3.5.3,在gradle-wrapper.properties中从gradle-5.6.4-all.zip降级为gradle-5.4.1-all.zip,它现在可以正常工作。

android android-multidex calligraphy
1个回答
0
投票

是,我遇到了同样的问题,两个版本都为3.6.0 / 3.6.1

© www.soinside.com 2019 - 2024. All rights reserved.