java - convertir - No se puede ejecutar dex: varios archivos dex definen Lbolts/AggregateException
abrir archivo jar online (4)
Encontré esto recientemente en mi proyecto nativo de reacción, puede ir a su carpeta de Android de su proyecto. y en la terminal, pulse este comando "./gradlew app: dependencies" para ver el árbol de dependencias. Encontré dos paquetes para Android pernos en Facebook SDK. Si excluyes este paquete de Facebook SDK, las cosas funcionarán bien otra vez.
compile (''com.facebook.react:react-native:+'') {
exclude group: ''com.parse.bolts'', module: ''bolts-tasks''
}
Sé que muchos problemas de dex han sido reportados muchas veces antes, pero ninguna de las soluciones parece funcionar en mi caso.
Consola:
Unable to execute dex: Multiple dex files define Lbolts/AggregateException;
Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lbolts/AggregateException;
Una de las soluciones populares es desmarcar el contenedor "bibliotecas privadas de Android" de buildpath. No puedo hacer eso porque hay algunas bibliotecas más en ese contenedor que necesito.
Otra solución es desmarcar cualquier biblioteca duplicada agregada explícitamente en forma de .jar. No tengo tales bibliotecas.
La biblioteca duplicada en mi caso es: android-support-v7-appcompat.jar
Lo tengo (directamente referenciado desde la carpeta sdk) en estos dos contenedores:
1.) bibliotecas privadas de Android
2.) Dependencias de Android
El problema es que simplemente no puedo desmarcar ninguno de estos dos contenedores completamente, ya que ambos contienen otras bibliotecas necesarias. Pero tampoco puedo eliminar este archivo duplicado .jar de ninguno de los contenedores.
EDITAR: NB : Cuando agrego el proyecto de biblioteca android-support-v7-appcompat a mi proyecto, entra en ambos contenedores. Debe haber alguna manera para que entre en uno solo.
¿Alguien puede ayudarme cómo puedo hacerlo?
Esto puede suceder cuando agregue facebook SDK a Android, puede resolverlo con:
compile ("com.facebook.android:facebook-android-sdk:4.1.0") {
exclude group: ''com.parse.bolts'', module: ''bolts-android''
}
como la versión react se ha actualizado a 0.31.0, cuando desea integrar com.facebook.fresco:animated-gif:0.10.0
que tiene com.parse.bolts
tiene bien, puede hacer lo siguiente:
compile (''com.facebook.react:react-native:+'') {
exclude group: ''com.parse.bolts'', module: ''bolts-tasks''
}
compile (''com.facebook.fresco:animated-gif:0.10.0''){
exclude group: ''com.parse.bolts'', module: ''bolts-tasks''
}
Resuelto de alguna manera
bolts-android
biblioteca de bolts-android
fue el verdadero problema aquí. Había dos versiones diferentes causando un conflicto. La biblioteca de FacebookSDK
trae los bolts-android-1.1.2
, y android-support-v7-appcompat
trae los bolts-android-1.1.4
.
Desmarqué el contenedor de bibliotecas privadas de Android en el proyecto de la biblioteca FacebookSDK
, que contenía bolts-android-1.1.2
. Como resultado, mi proyecto ahora solo tenía una versión, bolts-android-1.1.4
, resolviendo el conflicto. Se ejecuta bien ahora.
Además, resulta que las entradas duplicadas de android-support-v7-appcompat
no fueron un problema.