¿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:

 <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.

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" /> 
  • Diferencia entre build.xml y project_name.xml
  • Dispositivo Intellij no especificado en el editor de interfaz de usuario android
  • Importar proyecto android en Intellij IDEA / utilizar recursos compartidos
  • Intellij: android-support-v4.jar in incluido en actionBarSherlock y Project => IllegalArgumentException
  • IntelliJ MyClass.class (No hay tal archivo o directorio) cuando se ejecuta la aplicación
  • ¿Cómo forzar a Android Studio a utilizar rutas relativas?
  • Intellij Android + Maven no puede encontrar las pruebas de unidad
  • Error al importar nuevo proyecto Gradle: No se pudo obtener el modelo del tipo 'IdeaProject'
  • ¿Cuál es el significado de IntelliJ android-validator error?
  • Intellij IDEA formatea XML con atributos de alineación
  • Android Studio 0.2.8 TODO los colores han cambiado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.