¿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" /> 
  • Cómo formatear texto largo en strings.xml?
  • No se puede resolver el símbolo de Android - Android app - intelliJ
  • Android Studio Start Failed - ClassNotFoundException: com.intellij.ide.plugins.PluginManager
  • Haga que la ventana de documentación de IntelliJ (quick-doc) se cierre cuando se aleja el ratón
  • Dispositivo Virtual Android - Armeabi-v7a vs x86_64
  • Cómo convertir automáticamente if-else if statement to switch
  • Inferir la nulidad dura para siempre
  • Android en Intellij mostrando error: no es una actividad
  • Generar estilo de xml en intellij (/ android studio)
  • ¿Cómo habilitar la compilación externa en Android Studio permanentemente?
  • DatePicker causas Excepción generada durante la representación en LayoutEditor
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.