发现多个文件 OS 独立路径 'META-INF/proguard/androidx-annotations.pro'
More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro'
我正在尝试 android WorkManager, The code is throwing error "More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro" when running, I tried the following ,但没有帮助。
build.gradle(应用程序)
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "rock.dmx.xaro.workmanagerexample"
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
def work_version = "1.0.0-alpha09"
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation "android.arch.work:work-runtime:$work_version"
}
目前这是一个已知问题,Architecture Components Release Notes 概述该问题并提供解决方案,直到 alpha10
版本的工作管理器库:
Known Issue
If you run into the following issue: "More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro'", please put the following in your gradle file as a temporary workaround while we fix the issue in alpha10:
android {
packagingOptions {
exclude 'META-INF/proguard/androidx-annotations.pro'
}
}
因此,在您的情况下,android 部分应如下所示:
android {
compileSdkVersion 28
defaultConfig {
applicationId "rock.dmx.xaro.workmanagerexample"
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
// Temporary fix until alpha10
packagingOptions {
exclude 'META-INF/proguard/androidx-annotations.pro'
}
}
问题应该在 1.0.0-alpha10
版本的 WorkManager 中得到妥善解决。
可以在 build.gradle(app) 中使用添加(由 回答)
android {
packagingOptions {
exclude 'META-INF/proguard/androidx-annotations.pro'
}
}
或将 android.arch.work
版本降级为 1.0.0-alpha08
dependencies {
implementation 'android.arch.work:work-runtime:1.0.0-alpha08'
}
当我将以下内容添加到我的应用程序的 build.gradle 依赖项部分时,我遇到了同样的错误:
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
继Migration to AndroidX之后:
- 在 Android Studio 中,从 Refactor 菜单中,select Migrate
至 AndroidX...
- 最好选中将项目备份为 zip 文件的选项,以防万一
迁移失败,
- 然后在单击 迁移 之后,您将可以选择位置
保存 zip 备份。
现在我可以毫无问题地构建了。
我的设置
Android Studio 3.2.1
JRE: 1.8.0_152-release-1136-b06 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains
macOS 10.13.6
将此添加到我的应用 build.gradle 文件中解决了我的问题。
android {
packagingOptions {
exclude 'META-INF/proguard/androidx-annotations.pro'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/notice.txt'
exclude 'META-INF/ASL2.0'
}
}
就我而言,我通过设置 androidx.room 使用与 androidx.lifecycle
相同的版本来解决问题
作为初学者,我在一些教程中使用预制项目时遇到了这个问题,上面的解决方案对我不起作用。
万一有人遇到同样的问题。
我必须升级 build.gradle
项目文件中的 gradle 版本:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.1'
}
}
...
然后我不得不在 gradle-wrapper.properties
中升级 gradle 包装器:
#Wed Sep 26 11:30:41 IST 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
# Delete this
#distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
# Add this
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
然后,我在 gradle.properties
文件中将 useAndroidX
设置为 true:
android.useAndroidX=true
就是这样。希望对你有帮助。
始终首先寻找 Gradle 中的实现。
也许两个实现相互冲突..也许你没有删除卡片视图 v7,并添加了 androidx 卡片视图,类似的东西比你尝试其他东西。
我就是这种情况,删除旧的实现解决了问题。
Nenad 编码愉快
我正在尝试 android WorkManager, The code is throwing error "More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro" when running, I tried the following
build.gradle(应用程序)
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "rock.dmx.xaro.workmanagerexample"
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
def work_version = "1.0.0-alpha09"
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation "android.arch.work:work-runtime:$work_version"
}
目前这是一个已知问题,Architecture Components Release Notes 概述该问题并提供解决方案,直到 alpha10
版本的工作管理器库:
Known Issue
If you run into the following issue: "More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro'", please put the following in your gradle file as a temporary workaround while we fix the issue in alpha10:
android {
packagingOptions {
exclude 'META-INF/proguard/androidx-annotations.pro'
}
}
因此,在您的情况下,android 部分应如下所示:
android {
compileSdkVersion 28
defaultConfig {
applicationId "rock.dmx.xaro.workmanagerexample"
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
// Temporary fix until alpha10
packagingOptions {
exclude 'META-INF/proguard/androidx-annotations.pro'
}
}
问题应该在 1.0.0-alpha10
版本的 WorkManager 中得到妥善解决。
可以在 build.gradle(app) 中使用添加(由
android {
packagingOptions {
exclude 'META-INF/proguard/androidx-annotations.pro'
}
}
或将 android.arch.work
版本降级为 1.0.0-alpha08
dependencies {
implementation 'android.arch.work:work-runtime:1.0.0-alpha08'
}
当我将以下内容添加到我的应用程序的 build.gradle 依赖项部分时,我遇到了同样的错误:
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
继Migration to AndroidX之后:
- 在 Android Studio 中,从 Refactor 菜单中,select Migrate 至 AndroidX...
- 最好选中将项目备份为 zip 文件的选项,以防万一 迁移失败,
- 然后在单击 迁移 之后,您将可以选择位置 保存 zip 备份。
现在我可以毫无问题地构建了。
我的设置
Android Studio 3.2.1
JRE: 1.8.0_152-release-1136-b06 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains
macOS 10.13.6
将此添加到我的应用 build.gradle 文件中解决了我的问题。
android {
packagingOptions {
exclude 'META-INF/proguard/androidx-annotations.pro'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/notice.txt'
exclude 'META-INF/ASL2.0'
}
}
就我而言,我通过设置 androidx.room 使用与 androidx.lifecycle
相同的版本来解决问题作为初学者,我在一些教程中使用预制项目时遇到了这个问题,上面的解决方案对我不起作用。
万一有人遇到同样的问题。
我必须升级 build.gradle
项目文件中的 gradle 版本:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.1'
}
}
...
然后我不得不在 gradle-wrapper.properties
中升级 gradle 包装器:
#Wed Sep 26 11:30:41 IST 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
# Delete this
#distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
# Add this
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
然后,我在 gradle.properties
文件中将 useAndroidX
设置为 true:
android.useAndroidX=true
就是这样。希望对你有帮助。
始终首先寻找 Gradle 中的实现。 也许两个实现相互冲突..也许你没有删除卡片视图 v7,并添加了 androidx 卡片视图,类似的东西比你尝试其他东西。
我就是这种情况,删除旧的实现解决了问题。
Nenad 编码愉快