support - Usar biblioteca de soporte en proyectos y biblioteca de Android(Android Studio)
manual de programacion android pdf (4)
Estoy usando el nuevo Android Studio, estoy buscando una manera de usar la biblioteca de soporte desde múltiples proyectos. Básicamente, tengo un proyecto que usa ActionBarSherlock
este proyecto requiere la biblioteca de soporte. Así que agregué una referencia como en esta pregunta .
Ahora tengo el problema de que mi proyecto principal también usa la biblioteca de soporte, así que tengo que incluye dos veces de alguna manera. Si elimino la biblioteca de uno de los dos proyectos, obtendré errores que algunas clases relacionadas con la biblioteca de soporte son desconocidos, lo que me queda claro, pero si tengo una referencia en ambos proyectos, me enfrentaré a este error:
Android Dex: [ProjectName] UNEXPECTED TOP-LEVEL EXCEPTION:
Android Dex: [ProjectName] java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/ShareCompat$ShareCompatImplJB;
Android Dex: [ProjectName] at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
Android Dex: [ProjectName] at com.android.dx.dex.file.DexFile.add(DexFile.java:163)
Android Dex: [ProjectName] at com.android.dx.command.dexer.Main.processClass(Main.java:490)
Android Dex: [ProjectName] at com.android.dx.command.dexer.Main.processFileBytes(Main.java:459)
...
¿Algúna idea de cómo arreglar esto?
¿Solía ser este un proyecto de Eclipse? Si es así, intente entrar en Eclipse, limpie el proyecto, salga, reconstrúyalo en IntelliJ. Creo que esto es un problema de estado, no un problema de configuración.
En lugar de importar la biblioteca de soporte de Android como jar, cambié las dependencias de las bibliotecas (en mi caso, Facebook SDK) en build.gradle a:
dependencies {
compile ''com.android.support:support-v4:13.0.0''
}
Me ocurrió un problema similar. Seleccione actionbarsherlock
en la pestaña / barra / lo que sea del proyecto (a la izquierda, para que pueda ver el árbol del proyecto). pulsa F4
para abrir la configuración del módulo.
Asegúrese de que no está utilizando las mismas dependencias dos veces en actionbarsherlock y su proyecto.
Asegúrese también de que está utilizando la versión de la biblioteca de soporte que se encuentra en android-studio sdk ( android-studio/sdk/extras/android
).
Finalmente, si eres como yo, asegúrate de no hacer que el bloqueo de acción dependiera de sí mismo, por lo tanto, ¡cargarás la biblioteca dos veces de esa manera! >. <
Eche un vistazo a estas imágenes que muestran mis preferencias de módulo: http://imgur.com/a/JupWp
Además, ¡no olvides asegurarte de que las libs
no oculten ninguna de las mismas!
Resolví esto yendo a File > Project Structure...
y seleccionando Modules
luego haga clic en la pestaña Dependencies
del módulo. Luego, junto a la biblioteca, cambié el ámbito de Compile
a Provided
.
Esto significa que el módulo aún puede usarlo, pero no alcanza la compilación, ya que asumo que ya está usando ese JAR en su proyecto principal.
¡Espero que esto ayude!