bol*_*est 11 android intellij-idea
我在IntelliJ中有以下目录结构,其中包含一个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
Run Code Online (Sandbox Code Playgroud)
将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>
Run Code Online (Sandbox Code Playgroud)
当我构建一个依赖于我的库项目的Android应用程序项目时,我收到一个错误:
[myapp] java.util.zip.ZipException: duplicate entry: res/drawable/image_shadow.9.png
Run Code Online (Sandbox Code Playgroud)
在项目结构对话框中,我配置项目编译器的输出是一个out我的项目的根目录下.当我尝试构建我的Android项目时,我注意到我的Android资源的副本最终在该out/production/base/com/example/base/res/文件夹下.
我的假设是我的Android资源被视为"普通"Java资源(您将加载使用的类型Class.getResource()),这就是他们被复制到的out/production原因,这反过来导致duplicate entry我看到的异常.
不知道是不是这样的话?如果是这样,我该如何防止这些文件被复制?在Eclipse中,文件中的<classpathentry>元素.classpath具有一个excluding属性,该属性采用glob模式来防止这种行为.
您应该有一个如下的项目结构:
无论如何,对于 res 文件夹,您应该有一个如下所示的条目:
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3216 次 |
| 最近记录: |