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
- Generación dinámica de sabores de productos
- Gradle Android Plugin - agregar atributo de sabor personalizado?
- Gradle: error: escape ilegal de unicode
- Gradle lanzamiento de construcción todavía debuggable?
- Variantes de construcción de Android en travis.ci
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.
- Android Build falla al usar Proguard y Gradle
- Cómo compilar AndroidAnnotations con Google Android Gradle Plugin?
- Gradle crea y despliega tipo de compilación específico
- Android ZIPALIGN finalizado con valor de salida distinto de cero -1
- Android studio Gradle dependencia biblioteca descarga url
- Android con Gradle (Java terminado con valor de salida no nulo 2)
- Gradle: Multi-Dimension Flavour ApplicationId
- Ejecución fallada para la tarea: app: compileDebugJavaWithJavac en Android Studio
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" } }
- Pantalla débil e interacción de bloques con hojas de fondo
- Auricular Bluetooth Connect / Pair y Android