Android ライブラリ プロジェクトを含む IntelliJ 内に次のディレクトリ構造があります。
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
には次のbase.iml
ものが含まれます。
<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>
ライブラリ プロジェクトに依存する Android アプリケーション プロジェクトをビルドすると、次のエラーが発生します。
[myapp] java.util.zip.ZipException: duplicate entry: res/drawable/image_shadow.9.png
[プロジェクト構造] ダイアログで、プロジェクト コンパイラの出力out
を、プロジェクトのルートの下のディレクトリになるように構成しました。out/production/base/com/example/base/res/
Android プロジェクトをビルドしようとすると、Android リソースのコピーがフォルダーの下にあることに気付きました。
私の仮説は、Android リソースが「通常の」Java リソース (を使用してロードするタイプ) のように扱われているというClass.getResource()
ことです。out/production
duplicate entry
これが事実であるかどうか、何か考えはありますか?その場合、これらのファイルがコピーされないようにするにはどうすればよいですか? Eclipse では、ファイル内の<classpathentry>
要素には、この種の動作を防ぐために glob パターンを取る属性があります。.classpath
excluding