Ho la seguente struttura di directory all'interno di IntelliJ, che contiene un progetto di libreria Android:Come si impedisce a IntelliJ di copiare le risorse nella directory di output del compilatore del progetto?
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
Il base.iml
contiene quanto segue:
<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>
Quando costruisco un progetto di applicazione Android che dipende dalla mia biblioteca progetto, ottengo un errore:
[myapp] java.util.zip.ZipException: duplicate entry: res/drawable/image_shadow.9.png
Nel progetto Stru finestra di dialogo, ho configurato l'output del compilatore di progetto come directory out
nella radice del mio progetto. Quando provo a creare il mio progetto Android, ho notato che le copie delle mie risorse Android finiscono nella cartella out/production/base/com/example/base/res/
.
mia ipotesi è che le mie risorse Android vengono trattati come "normali" le risorse Java (il tipo che si caricherebbe utilizzando Class.getResource()
), motivo per cui essi vengono copiati out/production
, che a sua volta causa l'eccezione duplicate entry
che io sono vedendo.
Qualche idea se questo è il caso? In tal caso, come posso impedire che questi file vengano copiati? In Eclipse, l'elemento <classpathentry>
nel file .classpath
ha un attributo excluding
che accetta un modello glob per impedire questo tipo di comportamento.
Devo aggiungere che ho provato la cosa '' come uno sparo al buio.Qualsiasi soluzione che lo richiede è in qualche modo indesiderabile perché nasconde la mia cartella 'res' dall'albero dei sorgenti nell'interfaccia utente di IntelliJ. Voglio escludere la cartella dalla considerazione per la compilazione, non dall'essere visibile. –
bolinfest
Il problema potrebbe essere nelle impostazioni della sfaccetta Android, probabilmente la directory errata è configurata lì come 'res'. Non posso dire altro senza i file '.iml'. – CrazyCoder
Credo che il mio aspetto ha il boilerplate di serie: configuration> SO non sembra consentirmi di incollare l'intera cosa. Sono curioso di sapere se questa interazione con i progetti di libreria packagePrefix e Android sia stata testata in precedenza? –
bolinfest