Cyr*_*rus 270 android gradle build.gradle
当我构建我的应用程序时,我得到了跟随错误.
错误:任务':app:transformResourcesWithMergeJavaResForDebug'的执行失败.在OS独立路径'META-INF/LICENSE'中找到多个文件
这是我的build.gradle文件
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "cn.sz.cyrus.kotlintest"
minSdkVersion 14
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
javaCompileOptions{
annotationProcessorOptions{
includeCompileClasspath = true
}
}
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
/* exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'*/
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
compile 'com.android.support:appcompat-v7:25.3.1'
testCompile 'junit:junit:4.12'
compile 'com.android.support:design:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.1'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1'
compile 'com.github.GrenderG:Toasty:1.2.5'
compile 'com.orhanobut:logger:1.15'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'com.umeng.analytics:analytics:latest.integration'
compile 'ai.api:libai:1.4.8'
compile 'ai.api:sdk:2.0.5@aar'
// api.ai SDK dependencies
compile 'com.google.code.gson:gson:2.8.0'
compile 'commons-io:commons-io:2.4'
compile 'com.android.support:multidex:1.0.1'
}
Run Code Online (Sandbox Code Playgroud)
当我将这些代码添加到我的gradle文件中时.
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
Run Code Online (Sandbox Code Playgroud)
这个错误将被解决,但另一个问题将会发生.像这样
java.lang.NoClassDefFoundError: com.squareup.leakcanary.internal.HeapAnalyzerService
at com.squareup.leakcanary.LeakCanary.isInAnalyzerProcess(LeakCanary.java:145)
at cn.sz.cyrus.wemz.TestApplication.onCreate(TestApplication.kt:32)
Run Code Online (Sandbox Code Playgroud)
谁有想法如何解决这个问题?
Sha*_*him 398
你可以在yourProject/app/build.gradle里面添加它android{}
android {
packagingOptions {
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'
}
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*ara 97
在我的情况下,仅在yourProject/app/build.gradle内部排除路径'META-INF/LICENSE'就足够了android{} .这里是
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
}
Run Code Online (Sandbox Code Playgroud)
然后做清洁项目和重建项目.
Dan*_*ina 70
这里的解决方案对我没有帮助,但这个链接确实如此.
如果你有一个库添加一些android .so文件 - libassmidi.so或者libgnustl_shared.so- 你必须告诉gradle在打包时只选择一个,否则你会得到冲突.
android {
packagingOptions {
pickFirst 'lib/armeabi-v7a/libassmidi.so'
pickFirst 'lib/x86/libassmidi.so'
}
}
Run Code Online (Sandbox Code Playgroud)
在使用React Native应用程序作为Android项目中的库时,我遇到了这个问题.希望能帮助到你
小智 34
我在多模块应用程序环境中遇到了类似的问题:
错误:任务“:app:transformResourcesWithMergeJavaResForDebug”的执行失败。发现多个文件与操作系统无关的路径“META-INF/AL2.0”
我的几个模块都报告了这个问题,但上述解决方案都没有修复它。原来,我使用的是 Coroutines 1.3.6 版本,它似乎嵌入了 META-INF/AL2.0,它已经被我正在使用的另一个库嵌入。为了修复它,我将以下代码片段添加到失败模块的 build.gradle 中:
configurations.all {
resolutionStrategy {
exclude group: "org.jetbrains.kotlinx", module: "kotlinx-coroutines-debug"
}
}
Run Code Online (Sandbox Code Playgroud)
鉴于它发生在多个模块上,我已将该resolutionStrategy代码移至我的项目级别 build.gradle。之后一切正常。
Dmi*_*huk 30
有类似的消息
错误:任务':app:transformResourcesWithMergeJavaResForDebug'的执行失败.使用OS独立路径'constant-values.html'找到多个文件
要解决它,我必须在Android Studio中启用包视图(1),然后浏览树到库,找到重复项(2)
然后,ctrl + alt + f12(或RMB菜单)(3) - 找到导致问题的库.制作导致问题的libs中的文件列表,并将它们写入android部分内的app的build.gradle文件中.其他选项是处理包含重复文件的库
packagingOptions {
exclude 'allclasses-frame.html'
exclude 'allclasses-noframe.html'
<..>
Run Code Online (Sandbox Code Playgroud)
Yog*_*dra 29
对于 Gradle 7.2 及更高版本 添加应用内 Gradle 文件
android {
packagingOptions {
resources.excludes.add("META-INF/*")
}
}
Run Code Online (Sandbox Code Playgroud)
Mir*_*aig 25
在 android{} 内的应用级 gradle 文件中添加以下内容
packagingOptions {
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'
exclude("META-INF/*.kotlin_module")
}
Run Code Online (Sandbox Code Playgroud)
Kar*_*ram 24
基本上当gradle将apk文件放在一起时,它会复制所有编译依赖项中的内容,它足够智能,可以看到来自两个不同jar文件的重复文件.来自两个不同的jar文件.这可以是任何文件,如a.txt或META-INF/DEPENDENCIES.最好使用以下内容排除这些文件,以防文件存在时仅用于提供信息.
android{
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
}
}
Run Code Online (Sandbox Code Playgroud)
或者,如果以防万一,该文件是类文件这样的强制文件,它是在两个相互关联的jar依赖项之间复制的,最好以更兼容的版本的方式找到这些jar的替代品.
Tec*_*hAJ 20
我有同样的问题,我试过这个
错误:在OS独立路径'META-INF/proguard/androidx-annotations.pro'中找到多个文件
解决方案: 要解决此问题,您需要做的就是将其添加到应用程序"build.gradle"中的android {}部分
packagingOptions {
exclude 'META-INF/proguard/androidx-annotations.pro'
}
Run Code Online (Sandbox Code Playgroud)
Owe*_*hen 17
我遇到了同样的错误,我发现它是由不同的模块包含来自不同包的相同类.
例如,一个使用了androidx包,另一个使用了pre-androidx
我通过使用Android Studio的内置功能将pre-androidx模块迁移到androidx来解决它:"重构 - >迁移到Androidx ..."而不排除任何内容.
根据您的情况,您可以检查模块之间是否存在任何依赖性不匹配.
Vai*_*van 17
使用时会发生这种情况
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.2.0
并在下一版本中修复
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.2.1
Tra*_*tal 14
排除所有仅用于文档和信息目的的元信息文件是完全安全的:
android{
packagingOptions {
exclude 'META-INF/*'
}
}
Run Code Online (Sandbox Code Playgroud)
来源:https : //stackoverflow.com/a/49101232/13093413
Fay*_*yaz 12
基于@JohnnyLambada 和@Shaaban Ebrahim 提供的答案
为了排除嵌套文件,我使用了以下内容。
packagingOptions {
resources.excludes.add("META-INF/**/*")
}
Run Code Online (Sandbox Code Playgroud)
PS:不是用相同的答案发送垃圾邮件,而是在出现类似错误时提供建议
packagingOptions {
resources.excludes.add("META-INF/**/*")
}
Run Code Online (Sandbox Code Playgroud)
它捕获来自嵌套目录的错误,仅供参考,我已经使用设置了我的依赖项kotlin-dsl
Jor*_*sys 11
我已经阅读了与获得此消息有关的所有答案Android Studio:
使用操作系统独立路径“ META-INF / LICENSE”找到了多个文件
但是在这种情况下,没有必要排除类,我们只需要排除即可'META-INF/DEPENDENCIES',这可以在内部进行/app/build.gradle:
android{
...
...
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
}
}
Run Code Online (Sandbox Code Playgroud)
小智 10
我将Studio从Java 7更新到Java 8,并且出现了这个问题.然后我这样解决了:
android {
defaultConfig {
}
buildTypes {
}
packagingOptions{
exclude 'META-INF/rxjava.properties'
}
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我正在添加如下所示的jar依赖项:
implementation files('libs/json-simple-1.1.1.jar')
Run Code Online (Sandbox Code Playgroud)
但是我意识到由于依赖项中的以下第一行,已经添加了它们:
implementation fileTree(include: ['*.jar'], dir: 'libs')
Run Code Online (Sandbox Code Playgroud)
此行将lib文件夹中的所有jar添加到应用程序依赖项。
因此,在删除额外的依赖项之后 implementation files('libs/json-simple-1.1.1.jar')
它工作正常。
| 归档时间: |
|
| 查看次数: |
212845 次 |
| 最近记录: |