添加 support:preference-v7 或 -v14 库会导致 Gradle 构建失败
Adding support:preference-v7 or -v14 library causes Gradle build to fail
我的项目构建良好,直到我尝试包含支持首选项库。
当我这样做时,构建失败并出现此错误:
C:\Users\user\.gradle\caches\transforms-1\files-1.1\appcompat-v7-27.0.0.aar\e8afe3ff4b4dc10495266439a3695e57\res\values\values.xml:252:5-69: AAPT: error: duplicate value for resource 'attr/min' with config ''.
C:\Users\user\.gradle\caches\transforms-1\files-1.1\appcompat-v7-27.0.0.aar\e8afe3ff4b4dc10495266439a3695e57\res\values\values.xml:252:5-69: AAPT: error: resource previously defined here.
C:\Users\user\StudioProjects\project\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:627: error: duplicate value for resource 'attr/min' with config ''.
C:\Users\user\StudioProjects\project\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:483: error: resource previously defined here.
* What went wrong:
Execution failed for task ':app:mergeDebugResources'.
> Error: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
我真的不知道为什么会出现这个错误...
编辑:完整 build.gradle:
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
android {
compileSdkVersion 27
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
defaultConfig {
applicationId "com.myapp"
minSdkVersion 16
targetSdkVersion 27
multiDexEnabled true
versionCode 1
versionName "myVersion"
resConfigs "en"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
ext.enableCrashlytics = false
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
def firebaseVersion = '11.4.2'
def supportVersion = '27.0.0'
//Firebase Crashlytics
compile('com.crashlytics.sdk.android:crashlytics:2.7.1@aar') {
transitive = true
}
//Firebase
implementation 'com.google.firebase:firebase-auth:' + firebaseVersion
implementation 'com.google.firebase:firebase-core:' + firebaseVersion
implementation 'com.google.firebase:firebase-firestore:' + firebaseVersion
//FirebaseUI
implementation 'com.firebaseui:firebase-ui-auth:3.1.0'
//Android Support
implementation 'com.android.support:support-v4:' + supportVersion
implementation 'com.android.support:appcompat-v7:' + supportVersion
implementation 'com.android.support:cardview-v7:' + supportVersion
implementation 'com.android.support:gridlayout-v7:' + supportVersion
implementation 'com.android.support:recyclerview-v7:' + supportVersion
implementation 'com.android.support:preference-v7:' + supportVersion
implementation 'com.android.support:preference-v14:' + supportVersion
implementation 'com.android.support:support-vector-drawable:' + supportVersion
implementation 'com.android.support:design:' + supportVersion
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.android.support:multidex:1.0.2'
//Material About
implementation 'com.github.daniel-stoneuk:material-about-library:2.2.3-support26.1.0' //Weird version system
//OpenCSV
implementation('com.opencsv:opencsv:4.0') {
//Transitively requires Apache Commons, which necessitates multidex...
exclude group: 'commons-beanutils'
}
//Gson
implementation 'com.google.code.gson:gson:2.8.2'
}
apply plugin: 'com.google.gms.google-services'
它需要更多细节,所以我会详细说明这个问题。
我想使用 AppCompat Preference 库,但每当我尝试将它添加到我的 build.gradle 时,开头的错误就会弹出。
您可以转到文件->使缓存无效/重新启动。这将使您项目中的任何错误都无效。如果有帮助,请告诉我!
您可以尝试从 Material 关于库中排除支持库:
implementation ('com.github.daniel-stoneuk:material-about-library:2.2.3-support26.1.0') {
exclude group: 'com.android.support'
exclude module: 'appcompat-v7'
exclude module: 'cardview-v7'
exclude module: 'design'
}
请看其build.gradle:https://github.com/daniel-stoneuk/material-about-library/blob/master/build.gradle
显然问题是由我的 attrs.xml:
中的一个 ID 引起的
<resources>
<declare-styleable name="MyView">
<attr name="min" format="float" />
</declare-styleable>
</resources>
我通过将 min
更改为 minValue
来修复此错误。
我的项目构建良好,直到我尝试包含支持首选项库。
当我这样做时,构建失败并出现此错误:
C:\Users\user\.gradle\caches\transforms-1\files-1.1\appcompat-v7-27.0.0.aar\e8afe3ff4b4dc10495266439a3695e57\res\values\values.xml:252:5-69: AAPT: error: duplicate value for resource 'attr/min' with config ''.
C:\Users\user\.gradle\caches\transforms-1\files-1.1\appcompat-v7-27.0.0.aar\e8afe3ff4b4dc10495266439a3695e57\res\values\values.xml:252:5-69: AAPT: error: resource previously defined here.
C:\Users\user\StudioProjects\project\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:627: error: duplicate value for resource 'attr/min' with config ''.
C:\Users\user\StudioProjects\project\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:483: error: resource previously defined here.
* What went wrong:
Execution failed for task ':app:mergeDebugResources'.
> Error: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
我真的不知道为什么会出现这个错误...
编辑:完整 build.gradle:
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
android {
compileSdkVersion 27
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
defaultConfig {
applicationId "com.myapp"
minSdkVersion 16
targetSdkVersion 27
multiDexEnabled true
versionCode 1
versionName "myVersion"
resConfigs "en"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
ext.enableCrashlytics = false
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
def firebaseVersion = '11.4.2'
def supportVersion = '27.0.0'
//Firebase Crashlytics
compile('com.crashlytics.sdk.android:crashlytics:2.7.1@aar') {
transitive = true
}
//Firebase
implementation 'com.google.firebase:firebase-auth:' + firebaseVersion
implementation 'com.google.firebase:firebase-core:' + firebaseVersion
implementation 'com.google.firebase:firebase-firestore:' + firebaseVersion
//FirebaseUI
implementation 'com.firebaseui:firebase-ui-auth:3.1.0'
//Android Support
implementation 'com.android.support:support-v4:' + supportVersion
implementation 'com.android.support:appcompat-v7:' + supportVersion
implementation 'com.android.support:cardview-v7:' + supportVersion
implementation 'com.android.support:gridlayout-v7:' + supportVersion
implementation 'com.android.support:recyclerview-v7:' + supportVersion
implementation 'com.android.support:preference-v7:' + supportVersion
implementation 'com.android.support:preference-v14:' + supportVersion
implementation 'com.android.support:support-vector-drawable:' + supportVersion
implementation 'com.android.support:design:' + supportVersion
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.android.support:multidex:1.0.2'
//Material About
implementation 'com.github.daniel-stoneuk:material-about-library:2.2.3-support26.1.0' //Weird version system
//OpenCSV
implementation('com.opencsv:opencsv:4.0') {
//Transitively requires Apache Commons, which necessitates multidex...
exclude group: 'commons-beanutils'
}
//Gson
implementation 'com.google.code.gson:gson:2.8.2'
}
apply plugin: 'com.google.gms.google-services'
它需要更多细节,所以我会详细说明这个问题。 我想使用 AppCompat Preference 库,但每当我尝试将它添加到我的 build.gradle 时,开头的错误就会弹出。
您可以转到文件->使缓存无效/重新启动。这将使您项目中的任何错误都无效。如果有帮助,请告诉我!
您可以尝试从 Material 关于库中排除支持库:
implementation ('com.github.daniel-stoneuk:material-about-library:2.2.3-support26.1.0') {
exclude group: 'com.android.support'
exclude module: 'appcompat-v7'
exclude module: 'cardview-v7'
exclude module: 'design'
}
请看其build.gradle:https://github.com/daniel-stoneuk/material-about-library/blob/master/build.gradle
显然问题是由我的 attrs.xml:
中的一个 ID 引起的<resources>
<declare-styleable name="MyView">
<attr name="min" format="float" />
</declare-styleable>
</resources>
我通过将 min
更改为 minValue
来修复此错误。