代码之家  ›  专栏  ›  技术社区  ›  Edijae Crusar

类描述符'Landroid/support/customtabs/ICustomTabsCallback/;'不能用dex格式表示

  •  9
  • Edijae Crusar  · 技术社区  · 6 年前

    我把我的android工作室升级到 3.3 canary 13 (截至本文撰写之日最新)。我被提示更新我的项目的gradle版本,并将其更新为 3.3.0-alpha13

    classpath 'com.android.tools.build:gradle:3.3.0-alpha13'

    现在,当我试图运行我的项目时,它失败了,出现了一个错误

    Error: Class descriptor 'Landroid/support/customtabs/ICustomTabsCallback/;' cannot be represented in dex format.

    我试图使缓存失效,清理和重建项目,但没有任何效果。下面是我的应用程序的build.gradle

    dependencies {
    
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0-alpha3', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    implementation 'androidx.appcompat:appcompat:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.android.material:material:1.0.0'
    
    }
    
    2 回复  |  直到 6 年前
        1
  •  6
  •   Edijae Crusar    6 年前

    我决定试试 ./gradlew build --stacktrace 我看到了 ICustomTabsCallback 类正在由使用 androidx.browser:browser:1.0.0-rc01 图书馆。

    > Transform browser.aar (androidx.browser:browser:1.0.0-rc01) with DexingTransform
    AGPBI: {"kind":"error","text":"Class descriptor \u0027Landroid/support/customtabs/ICustomTabsCallback/;\u0027 cannot be represented in dex format.","sources":[{}],"tool":"D8"}
    
    > Task :app:mergeExtDexDebug FAILED
    AGPBI: {"kind":"error","text":"Class descriptor \u0027Landroid/support/customtabs/ICustomTabsCallback/;\u0027 cannot be represented in dex format.","sources":[{}],"tool":"D8"}
    
    FAILURE: Build failed with an exception.
    

    ./gradlew app:dependencies 命令来查看依赖项中是否有冲突,我发现了错误。

     +--- androidx.appcompat:appcompat:1.0.0-rc01 -> 1.0.0 (*)
    |    \--- androidx.browser:browser:1.0.0-rc01
    |         +--- androidx.core:core:1.0.0-rc01 -> 1.0.0 (*)
    |         +--- androidx.annotation:annotation:1.0.0-rc01 -> 1.0.0
    |         +--- androidx.interpolator:interpolator:1.0.0-rc01 -> 1.0.0 (*)
    |         +--- androidx.collection:collection:1.0.0-rc01 -> 1.0.0 (*)
    |         \--- androidx.legacy:legacy-support-core-ui:1.0.0-rc01 -> 1.0.0 (*)
    

    debugCompileClasspath 配置。我们看得出来 androidx.appcompat:appcompat 包含 androidx.browser:browser

    androidx.appcompat:appcompat:1.0.0-rc01 -> 1.0.0 意味着那个版本 1.0.0 将使用而不是版本 1.0.0-rc01 但事实并非如此 安德洛伊德。browser:browser . 版本 1.0.0-rc01型 将使用而不是版本 1.0.0

    build.gradle

    configurations {
        compile.exclude group: 'androidx.browser', module: 'browser'
    }
    

    所以我的应用程序的build.gradle看起来像这样

    apply plugin: 'com.android.application'
    
    apply plugin: 'kotlin-android'
    apply plugin: 'kotlin-android-extensions'
    apply plugin: 'kotlin-kapt'
    apply plugin: 'realm-android'
    
    android {
        //....
    }
    
    configurations {
        compile.exclude group: 'androidx.browser', module: 'browser'
    }
    
    dependencies {
    // ....
    }
    

    之后,我只是同步,清理和重建我的项目。

    更新

    如果答案不能解决你的问题,另一个选择是使用androidstudio稳定版(3.2.1根据本文)和gradle3.2.1 classpath 'com.android.tools.build:gradle:3.2.1'

        2
  •  1
  •   JimmyDeemo    5 年前

    如果有人在让AndroidX使用Jetifier时遇到了这个问题,那么你有两个选择。

    如果你能够更新你的Gradle和插件版本,那么你应该这样做;这是一个3.3.0及更高版本解决的bug。你可以在这里看到你需要的gradle/plugin版本的组合; https://developer.android.com/studio/releases/gradle-plugin .

    在我的例子中,我被绑定到Gradle4.6,它是3.2.1的最高插件版本(我使用的是Unity 2017.4 LTS)。我可以在哪应用找到的变通方法 here 将以下内容添加到我的build.gradle文件中;

    buildscript {    
        dependencies {
            classpath 'com.android.tools.build:gradle:3.2.1'
            classpath 'com.android.tools.build.jetifier:jetifier-processor:1.0.0-beta02'
        }
    }
    

    感谢上面评论中的@thehebrewhamer指出了这一点。

        3
  •  0
  •   SEG.Veenstra    6 年前

    试着改变你的主题 styles.xml 所以它延伸了一个物质成分的主题。

    <style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
    

    其他选项:

    Theme.MaterialComponents
    Theme.MaterialComponents.NoActionBar
    Theme.MaterialComponents.Light
    Theme.MaterialComponents.Light.NoActionBar
    Theme.MaterialComponents.Light.DarkActionBar
    

    更多信息: https://github.com/material-components/material-components-android/blob/master/docs/getting-started.md