Comment puis-je empêcher IntelliJ de copier des ressources dans le répertoire de sortie du compilateur de projet?

J'ai la structure de répertoire suivante dans IntelliJ, qui contient un projet de bibliothèque 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 

Le base.iml contient les éléments suivants:

  • La détection d'une application est-elle installée ou non?
  • Android Studio collé sur "Gradle: résoudre les dépendances" _debugCompile '"ou" détachéConfiguration1 "
  • La marge FrameLayout ne fonctionne pas
  • Utilisation de libusb sur Android sans enracinement
  • L'appareil Android se déconnecte du débogueur quelques secondes après la coupure du point d'arrêt
  • Android - appeler ui thread du thread de travail
  •  <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> 

    Lorsque je crée un projet d'application Android qui dépend du projet de ma bibliothèque, j'ai une erreur:

     [myapp] java.util.zip.ZipException: duplicate entry: res/drawable/image_shadow.9.png 

    Dans la boîte de dialogue Structure du projet , j'ai configuré la sortie du compilateur de projet pour être un répertoire out sous la racine de mon projet. Lorsque j'essaie de construire mon projet Android, j'ai remarqué que les copies de mes ressources Android se retrouvaient dans le dossier out/production/base/com/example/base/res/ .

    Mon hypothèse est que mes ressources Android sont traitées comme des ressources Java "normales" (le type que vous allez charger à l'aide de Class.getResource() ), c'est pourquoi elles sont en cours de copie out/production , ce qui provoque l'exception d' duplicate entry Que je vois.

    Une idée si tel est le cas? Si oui, comment puis-je empêcher la copie de ces fichiers? Dans Eclipse, l'élément <classpathentry> dans le fichier .classpath possède un attribut excluding qui prend un modèle glob pour éviter ce type de comportement.

  • Devrais-je obscurcir le secret du consommateur OAuth enregistré par une application Android?
  • Comment ajouter des éléments d'icônes de débordement dans une carte dans Android
  • ListView onclick va à une nouvelle activité
  • Comment utiliser l'intention de choisir le navigateur de fichiers pour sélectionner le fichier
  • Erreur d'affichage ionique si gps est désactivé
  • VideoView pour correspondre à la hauteur du parent et garder le rapport d'aspect
  • 2 Solutions collect form web for “Comment puis-je empêcher IntelliJ de copier des ressources dans le répertoire de sortie du compilateur de projet?”

    J'ai rencontré un problème similaire car le répertoire main été marqué comme «Sources».

    Ainsi, dans la structure du projet, pour la facette Android, sous l'onglet "Structure", j'ai eu:

    ... Resources directory: .../src/main/res ...

    Et sous l'onglet "Sources" normal pour le module, le dir main sous src a été marqué comme "Sources".

    Je l'ai corrigé en faisant ressortir l'onglet Sources:

    - src (unmarked) - main (unmarked) - java (Sources) - res (Resources)

    Donc, je suppose que l'erreur est due au fait que les problèmes de résolution sont intégrés au zip à la fois en tant que sources et ressources, donc la duplication.

    Vous devriez avoir une structure de projet comme:

    • Projet / src / main / res
    • Project / src / main / assets
    • Project / src / main / java
    • Project / src / main / AndroidManifest.xml

    Quoi qu'il en soit, pour le dossier res, vous devriez avoir une entrée comme ceci:

      <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" /> 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.