Duplicar archivos copiados en APK Android – ¿Puede ser fusionado?

En mi proyecto android he incluido dos bibliotecas como JARs en la carpeta libs. Y los agrego al Gradle de la construcción como a continuación.

dependencies { compile files('libs/siddhi-core-4.0.0-M13-SNAPSHOT.jar') compile files('libs/siddhi-execution-math-4.0.2-SNAPSHOT.jar') } 

Esos dos archivos jar tienen un archivo con el mismo nombre ("org.wso2.siddhi.annotation.Extension") pero con contenido diferente. Y ambos archivos son importantes para el proyecto. Ya que tiene el mismo nombre gradle no construirá diciendo

 Duplicate files copied in APK 

¿Cómo puedo fusionar esos dos archivos en un solo archivo con el mismo nombre? Esos dos archivos son archivos de texto con una lista de nombres de clase. En dos archivos tienen dos listas diferentes. Así que quiero combinarlos en una lista en un archivo de texto con el mismo nombre.

Introduzca aquí la descripción de la imagen

Finalmente encontré la respuesta. En el gradle de compilación de aplicaciones, puede especificar la combinación de los archivos conflictivos.

 packagingOptions { merge 'META-INF/annotations/org.wso2.siddhi.annotation.Extension' } 

Para obtener más información, consulta https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.PackagingOptions.html

Puede excluir el archivo de jar descomprimirlos primero y copiar el jar sin esos archivos, después de que compilar ese archivo de copia unZip en lugar del archivo real, como este

 task unzipJar(type: Copy) { from zipTree('libs/siddhi-core-4.0.0-M13-SNAPSHOT.jar') into ("$buildDir/libs/siddhi-core-4.0.0-M13-SNAPSHOT") include "**/*.class" exclude "org.wso2.siddhi.annotation.Extension" } dependencies { compile files('libs/siddhi-execution-math-4.0.2-SNAPSHOT.jar') compile files("$buildDir/libs/siddhi-core-4.0.0-M13-SNAPSHOT") { builtBy "unzipJar" } } 

Por favor, compruebe esto, incluso no tuve la oportunidad de usarlo, pero debería funcionar.

No es posible que ambos archivos tengan la misma resolución de nombres (org.wso2.siddhi.annotation.Extension). Así que no va a funcionar. Digamos que algunos como se han incluido tanto los frascos de cómo va a utilizar uno de ellos, es decir. Cómo el tiempo de ejecución identificará únicamente la clase ya que ambas clases tienen el mismo espacio de nombres y nombre.

Prueba este

  dependencies { compile files('libs/siddhi-execution-math-4.0.2-SNAPSHOT.jar') compile files("$buildDir/libs/siddhi-core-4.0.0-M13-SNAPSHOT") { builtBy "unzipJar" } } 
  • Agrega la API de datos de YouTube a Android Studio
  • Configuración de la firma de depuración en los sabores de producto de Gradle
  • AndroidStudio: agrega carpeta virtual en gradle
  • Error: (2, 0) Plugin con id 'com.github.dcendents.android-maven' no encontrado
  • Cómo cambiar la versión de herramientas de compilación en Android Studio
  • La aplicación no se ejecutará en el dispositivo: DELETE_FAILED_INTERNAL_ERROR?
  • Cobertura de código en Android Studio con Sonar & Gradle
  • Código de ruta por sabor en Android Gradle
  • Android Gradle produce una excepción TransformException: java.util.zip.ZipException: error en abrir archivo zip durante transformClassesWithDexForRelease
  • Gradle Android - Anular tareas estándar
  • Problemas con rxjava-android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.