程序类型已存在:android.support.constraint.BuildConfig

Meg*_*ary 12 android gradle android-studio build.gradle

build.gradle(模块:app)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 'android-P'
    buildToolsVersion '27.0.3'
    defaultConfig {
        multiDexEnabled true
        applicationId "tk.megh.myapplication"
        minSdkVersion 'P'
        targetSdkVersion 'P'
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    dexOptions {
        preDexLibraries = false
    }
}



dependencies {
    implementation 'com.android.support:multidex:1.0.1'
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.0'
    androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    implementation 'com.android.support:appcompat-v7:+'
    testImplementation 'junit:junit:4.12'

}
Run Code Online (Sandbox Code Playgroud)

嗯,我想我知道是什么导致了错误,如果你看一下依赖关系,有两个不同名称的冗余包

com.android.support.constraint:constraint-layout:1.1.0 androidx.constraintlayout:constraintlayout:1.1.0

但我不能删除其中任何一个,因为它们被某些包使用.我是Android开发的新手,所以我对任何变通方法都不太了解.

如果我删除

implementation 'com.android.support.constraint:constraint-layout:1.1.0'
Run Code Online (Sandbox Code Playgroud)

调试时出现此错误:

    java.lang.RuntimeException: Unable to start activity 
ComponentInfo{tk.megh.myapplication/tk.megh.myapplication.MainActivity}: 
android.view.InflateException: Binary XML file line #2: Binary XML file 
line #2: Error inflating class android.support.constraint.ConstraintLayout
Run Code Online (Sandbox Code Playgroud)

如果我删除

implementation 'androidx.constraintlayout:constraintlayout:1.1.0'
Run Code Online (Sandbox Code Playgroud)

调试时出现以下错误:

 java.lang.RuntimeException: Unable to start activity 
ComponentInfo{tk.megh.myapplication/tk.megh.myapplication.DisplayMessageActivity}: 
android.view.InflateException: Binary XML file line #2: Binary XML file line #2: 
Error inflating class androidx.constraintlayout.widget.ConstraintLayout
Run Code Online (Sandbox Code Playgroud)

额外细节:

导入MainActivity.java:

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
Run Code Online (Sandbox Code Playgroud)

导入DisplayMessageActivity.java:

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;   
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Rid*_*lly 31

错误表明您正在使用ConstraintLayout布局xml文件中的.

只保留一个版本的库,并确保您在xmls中使用该版本的ConstraintLayout.

所以,如果你保持androidx,检查你的布局文件,并确保,你在androidx.constraintlayout.ConstraintLayout那里使用,而不是 android.support.constraint.ConstraintLayout.

  • 当您(从可视化编辑器)将视图组转换为CLayout时,Android Studio 3.2(canary 14)会添加androidx约束布局.必须是一个"bug"或一旦androidx将消失的东西.包装成为主流,另一包被删除.如果您已经在使用CL 1.1.0(来自支持),这是新项目模板为您做的事情(包括在gradle中),那么您将看到此冲突. (8认同)