tiene soporta sistema saber que como archivos android gradle build.gradle

android - soporta - Se encontró más de un archivo con la ruta independiente del sistema operativo ''META-INF/LICENSE''



ext4 android (17)

Cuando construyo mi aplicación, recibí un error de seguimiento.

Error: Error de ejecución para la tarea '': aplicación: transformResourcesWithMergeJavaResForDebug''. Se encontró más de un archivo con la ruta independiente del sistema operativo ''META-INF / LICENSE''

Este es mi archivo 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'' }

cuando agrego esos códigos a mi archivo gradle.

packagingOptions { exclude ''META-INF/DEPENDENCIES'' exclude ''META-INF/NOTICE'' exclude ''META-INF/LICENSE'' exclude ''META-INF/LICENSE.txt'' exclude ''META-INF/NOTICE.txt'' }

Este error se resolvería, pero sucederá otro problema. Me gusta esto

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)

¿Quién tiene ideas de cómo resolver esto?


Actualicé Studio de Java 7 a Java 8, y ocurrió este problema. Luego lo resolví de esta manera:

android { defaultConfig { } buildTypes { } packagingOptions{ exclude ''META-INF/rxjava.properties'' } }


Básicamente, cuando Gradle reúne el archivo apk, copia el contenido de todas las dependencias de compilación. Es lo suficientemente inteligente como para ver que hay un archivo duplicado ... proveniente de dos archivos jar diferentes. Esto podría ser cualquier archivo como a.txt o META-INF / DEPENDENCIES. Puede ser mejor excluir estos archivos usando lo siguiente, en caso de que el archivo esté presente solo con fines informativos.

android{ packagingOptions { exclude ''META-INF/DEPENDENCIES'' } }

O, en caso de que el archivo sea obligatorio, como un archivo de clase, que se ha duplicado en dos dependencias jar relacionadas entre sí, lo mejor es encontrar alternativas a estos archivos jar, en la forma de una versión más compatible.


En mi aplicación, estaba agregando las dependencias jar como esta:

implementation files(''libs/json-simple-1.1.1.jar'')

Pero me di cuenta de que ya se agregaron debido a la siguiente primera línea en las dependencias:

implementation fileTree(include: [''*.jar''], dir: ''libs'')

Esta línea agrega todos los archivos jar en la carpeta lib a la dependencia de la aplicación.

Por lo tanto, después de eliminar los implementation files(''libs/json-simple-1.1.1.jar'') dependencia adicionales implementation files(''libs/json-simple-1.1.1.jar'')

Está funcionando bien.


En mi caso, fue suficiente para excluir solo la ruta ''META-INF / LICENSE'' en yourProject/app/build.gradle dentro de android{} . Aquí está

packagingOptions { exclude ''META-INF/LICENSE'' }

Y luego hacer Proyecto limpio y Proyecto de reconstrucción.


Encontré el mismo error y descubrí que era el resultado de que diferentes módulos contenían las mismas clases de diferentes paquetes .

Por ejemplo, uno usaba el paquete androidx y el otro usaba pre-androidx

Lo resolví migrando el módulo pre-androidx a androidx usando la función incorporada de Android Studio: "Refactor -> Migrate to Androidx ..." sin excluir nada.

Para su situación, puede verificar si tiene desajustes de dependencia entre los módulos.


Enfrenté este problema, primero con algunas bibliotecas nativas (archivos .so) y luego con archivos java / kotlin. Resultó que estaba incluyendo una biblioteca desde la fuente, así como referencias a artefactos a través de una dependencia transitiva. Verifique su árbol de dependencia para ver si hay entradas redundantes. Use ./gradlew :app:dependencies para obtener el árbol de dependencias. Reemplace "aplicación" con el nombre de su módulo si el nombre del módulo principal es diferente.


Estaba teniendo el mismo problema y probé esto

Error: se encontró más de un archivo con la ruta independiente del sistema operativo ''META-INF / proguard / androidx-annotations.pro''

Solución: todo lo que tiene que hacer para solucionar esto es agregar esto a la sección de Android {} en ''build.gradle'' de su aplicación

packagingOptions { exclude ''META-INF/proguard/androidx-annotations.pro'' }


Esto sucede cuando se usa

org.jetbrains.kotlinx: kotlinx-coroutines-core: 1.2.0

Y se arregla en la próxima versión

org.jetbrains.kotlinx: kotlinx-coroutines-core: 1.2.1


He leído todas las respuestas relacionadas con obtener este mensaje en Android Studio :

Se encontró más de un archivo con la ruta independiente del sistema operativo ''META-INF / LICENSE''

pero en este caso excluir clases no es necesario, solo necesitamos excluir ''META-INF/DEPENDENCIES'' , esto se puede hacer dentro de /app/build.gradle :

android{ ... ... packagingOptions { exclude ''META-INF/DEPENDENCIES'' } }


Intente eliminar multidex de la configuración predeterminada y verifique el registro de errores de compilación. Si ese registro es relacionado con la clase INotification. Use esto en Android {}

configurations { all*.exclude group: ''com.android.support'', module: ''support-v4'' }

Esto me ayuda


Las soluciones aquí no me ayudaron, pero este enlace sí.

Si tiene una biblioteca que agrega algunos archivos libassmidi.so Android, como libassmidi.so o libgnustl_shared.so , debe decirle a gradle que elija solo uno al empaquetar, de lo contrario obtendrá el conflicto.

android { packagingOptions { pickFirst ''lib/armeabi-v7a/libassmidi.so'' pickFirst ''lib/x86/libassmidi.so'' } }

Estaba teniendo este problema al usar una aplicación React Native como biblioteca en un proyecto de Android. Espero eso ayude


Otra solución que he encontrado. Asegúrese de que sus versiones sean las mismas para las mismas bibliotecas padre e hijo en gradle, como se muestra a continuación:

dependencies { implementation fileTree(include: [''*.jar''], dir: ''libs'') implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation ''com.android.support:appcompat-v7:28.0.0'' implementation ''com.android.support.constraint:constraint-layout:1.1.3'' **implementation ''com.google.android.gms:play-services-maps:12.0.1''** 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 ''com.android.support:mediarouter-v7:28.0.0'' **implementation ''com.google.android.gms:play-services:12.0.1''** }


Para mí, la solución a continuación funcionó, también puede obtener ayuda, escribí debajo de la línea en el archivo gradle de la aplicación

packagingOptions { exclude ''META-INF/proguard/androidx-annotations.pro'' }


Puedes agregar esto en yourProject/app/build.gradle dentro de 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'' } }


Tenía un mensaje similar

Error: Error de ejecución para la tarea '': aplicación: transformResourcesWithMergeJavaResForDebug''. Se encontró más de un archivo con la ruta independiente del sistema operativo ''constant-values.html''

Para resolverlo, tuve que habilitar la vista de paquetes ( 1 ) en Android Studio, luego buscar en el árbol las bibliotecas y ubicar los duplicados ( 2 )

Luego, ctrl + alt + f12 (o menú RMB) ( 3 ) - y encontró bibliotecas que causaron el problema. Hice una lista de archivos dentro de esas bibliotecas que causaron los problemas, y los escribió en el archivo build.gradle de la aplicación dentro de la sección de Android . Otra opción es tratar con la biblioteca, que contiene archivos duplicados

packagingOptions { exclude ''allclasses-frame.html'' exclude ''allclasses-noframe.html'' <..>


Tengo el mismo problema y probé esto

Error: se encontró más de un archivo con la ruta independiente del sistema operativo ''META-INF / library_release.kotlin_module''

Solución:

android { packagingOptions { exclude ''META-INF/library_release.kotlin_module'' } }

https://github.com/WindSekirun/NaraeImagePicker/issues/7

Trabajó para mi....


Tuve un problema similar. recibía el mensaje de error

Error:Execution failed for task '':app:transformResourcesWithMergeJavaResForDebug''. More than one file was found with OS independent path ''javax/annotation/WillCloseWhenClosed.java''

Como se indica en algunas de las respuestas anteriores, usar el siguiente código funciona

''packagingOptions { exclude ''allclasses-frame.html'' }''

Pero recibí este error para 20 archivos diferentes, así que después de excluir 20 archivos, paré e intenté encontrar una solución decente. También me encontré con el

''Unable to execute dex: Multiple dex files'' error.

Finalmente logré resolver esto.

En primer lugar (como en mi caso WillCloseWhenClosed.java era el archivo duplicado), en Android Studio tiene la opción de ''buscar en todas partes''. Escriba y busque el archivo allí. Allí encontré varias instancias de este archivo. Así que hice clic en ambas instancias y vi su ubicación haciendo clic derecho en el archivo y viendo su ubicación cuando se abrieron en el estudio de Android.

En segundo lugar, descubrí que tenía algunas dependencias en el archivo gradle. Estaba usando el siguiente código

dependencies { compile ''com.google.api-client:google-api-client:1.23.0'' }

y también tenía sus mismos paquetes zip en la ubicación: / Users / user / AndroidStudioProjects / git / appname / app / libs / google-http-client-1.23 !.

Así que esto era redundante y por eso Gradle está encontrando 2 archivos. Así que eliminé mis paquetes zip y resolvió los errores por mí. Ten cuidado al hacer esto. Debe averiguar cuál es el archivo o paquete correcto que se eliminará.

En tercer lugar, gradle también crea un archivo zip de estos archivos de errores en esta ubicación (al menos para mí lo hizo): C: / Archivos de programa / Android / Android Studio / gradle / m2repository / com / google / code / findbugs / jsr305 / 1.3. 9 / jsr305-1.3.9.jar!

así que fui y eliminé el archivo jsr305-1.3.9.jar de aquí también.

Si todavía está confundido, simplemente vaya a ''buscar en todas partes'' en el estudio de Android, encuentre instancias de su archivo allí y tendría que eliminar uno de ellos. Tómese su tiempo y descubra cuál.