gpt4 book ai didi

android - 如何防止 IntelliJ 将资源复制到项目编译器输出目录中?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:50:23 25 4
gpt4 key购买 nike

我在 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

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

Project Structure 对话框中,我将 Project compiler output 配置为 out我项目根目录下的目录。当我尝试构建我的 Android 项目时,我注意到我的 Android 资源的副本最终位于 out/production/base/com/example/base/res/ 下。文件夹。

我的假设是我的 Android 资源被视为“普通”Java 资源(您将使用 Class.getResource() 加载的类型),这就是它们被复制到 out/production 的原因,这又会导致 duplicate entry我看到的异常。

知道是不是这样吗?如果是这样,我怎样才能防止这些文件被复制过来?在 Eclipse 中,<classpathentry> .classpath 中的元素文件有一个 excluding采用 glob 模式来防止此类行为的属性。

最佳答案

我遇到了类似的问题,因为 main 目录被标记为“Sources”。

所以在项目结构中,对于 Android 方面,在“结构”选项卡下我有:


...
资源目录:.../src/main/res
...

在模块的正常“Sources”选项卡下,src 下的main 目录已标记为“Sources”。

我通过使“来源”选项卡看起来像这样来修复它:


- src(未标记)
- 主要(未标记)
- java(来源)
- res(资源)

所以我猜这个错误是因为 res 东西被打包到 zip 中,既作为源又作为资源,因此出现了重复。

关于android - 如何防止 IntelliJ 将资源复制到项目编译器输出目录中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13017054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com