¿Cómo evito que IntelliJ copie recursos en el directorio de salida del compilador del proyecto?
Tengo la siguiente estructura de directorios dentro de IntelliJ, que contiene un proyecto de biblioteca de Android:
java/com/example/base/AndroidManifest.xml java/com/example/base/assets # contains Android assets java/com/example/base/res # contains Android resources java/com/example/base/Base.java java/com/example/base/base.iml
El base.iml
contiene lo siguiente:
- Bash: ./studio.sh: Permiso denegado (error al instalar Android-Studio)
- ¿Qué son los archivos iml en Android Studio?
- Emulador El dispositivo no está listo esperando 20 segundos
- IntelliJ IDEA 13 error: seleccione Android SDK
- Módulo o proyecto de importación como Biblioteca en Android Studio
<content url="file://$MODULE_DIR$"> <sourceFolder url="file://$MODULE_DIR$" isTestSource="false" packagePrefix="com.example.base" /> <sourceFolder url="file://$MODULE_DIR$/gen" isTestSource="false" /> <excludeFolder url="file://$MODULE_DIR$/res" /> </content>
Cuando construyo un proyecto de aplicación de Android que depende de mi proyecto de biblioteca, obtengo un error:
[myapp] java.util.zip.ZipException: duplicate entry: res/drawable/image_shadow.9.png
En el cuadro de diálogo Estructura del proyecto , configuré la salida del compilador de proyecto para que fuera un directorio en la raíz de mi proyecto. Cuando intento construir mi proyecto de Android, me di cuenta de que las copias de mis recursos de Android terminan en la carpeta out/production/base/com/example/base/res/
.
Mi hipótesis es que mis recursos de Android están siendo tratados como recursos "normales" de Java (el tipo que cargarías usando Class.getResource()
), por lo que se están copiando a out/production
, lo que a su vez hace que la excepción de duplicate entry
Que estoy viendo.
Alguna idea si este es el caso? Si es así, ¿cómo puedo evitar que se copien estos archivos? En Eclipse, el elemento <classpathentry>
en el archivo .classpath
tiene un atributo excluding
que toma un patrón glob para evitar este tipo de comportamiento.
- Mensaje de error de Android Studio (IntelliJ)
- Cómo configurar admob en IntelliJ Idea?
- Cómo hacer referencia a un jar externo en un proyecto de biblioteca de Android en IntelliJ v10
- IntelliJ importa proyecto de POM usando la versión incorrecta de JDK
- Compilación con el origen de otro módulo en Android Studio
- No se puede resolver el símbolo de Android - Android app - intelliJ
- IntelliJ Android Runtime Exception: ClassNotFound, no encontró la clase en el camino
- Error: Error interno: (java.lang.NoSuchMethodError) que afecta a todos mis proyectos
Encontré un problema similar porque el directorio main
estaba marcado como "Fuentes".
Así que en la estructura del proyecto, para la faceta de Android, bajo la pestaña "Estructura" que tenía:
... Resources directory: .../src/main/res ...
Y bajo la pestaña "Fuentes" normal para el módulo, el dir main
en src
había marcado como "Fuentes".
Lo solucioné haciendo que la pestaña Fuentes parezca:
- src (unmarked) - main (unmarked) - java (Sources) - res (Resources)
Así que supongo que el error se debe a que las cosas están siendo repletas en la cremallera tanto como fuentes y recursos de ahí la duplicación.
Debe tener una estructura de proyecto como:
- Proyecto / src / main / res
- Proyecto / src / main / assets
- Proyecto / src / main / java
- Proyecto / src / main / AndroidManifest.xml
De todos modos, para la carpeta res debe tener una entrada como esta:
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
- "Versión de facturación en la aplicación 3 NO admitida" con Play Store actualizada
- ¿Comprobar si el servicio se está ejecutando en Android?