【问题标题】:Gradle android optimize packagingOptionsGradle android 优化打包选项
【发布时间】:2014-07-29 12:38:55
【问题描述】:

我有那个项目结构:

-gradle root
           |-clients
                    |-client 1
                    |-client 2
                        ... 
                    |-client N
           |-libs
                    |-android lib 1
                    |-android lib 2
                        ...
                    |-android lib N
                    |-java lib 1
                    |-java lib 2
                        ...     
                    |-java lib N

在每个客户端构建文件中,我都有 packagingOptions 来排除选项。 类似的东西:

packagingOptions {
    exclude 'META-INF/DEPENDENCIES.txt'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
}

如何优化该块并将其移动到我的根 gradle 构建文件中? 我真的不想在所有客户端上复制粘贴它。

【问题讨论】:

标签: android gradle android-gradle-plugin


【解决方案1】:

找到解决方案。 致谢:https://github.com/frankdu/android-gradle-dagger-tutorial

我创建了单独的构建文件并将该设置移到那里。 文件 android_common.gradle

android {
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
    }
}

然后在每个客户端中放入该行:

apply from: "${rootDir}/android_common.gradle"

最后从我的客户构建文件中排除了packagingOptions。 此外,我还在那里移动了另一个常见的配置。 之后看起来干净、简单、漂亮。

【讨论】:

  • rootDir 在 android 1.0 中不可用
  • 谢谢,这只是一个例子,我没有在我的构建配置中使用 ${rootDir}。
  • 是否可以在drawable文件夹中提供图片(png)选项?
【解决方案2】:

作为记录,您的大多数包选项已经是默认选项。

PackagingOptions Gradle documentation

Pick first: none
Merge: /META-INF/services/**
Exclude:
/META-INF/LICENSE
/META-INF/LICENSE.txt
/META-INF/NOTICE
/META-INF/NOTICE.txt
/LICENSE
/LICENSE.txt
/NOTICE
/NOTICE.txt
/META-INF/*.DSA (all DSA signature files)
/META-INF/*.EC (all EC signature files)
/META-INF/*.SF (all signature files)
/META-INF/*.RSA (all RSA signature files)
/META-INF/maven/** (all files in the maven meta inf directory)
/META-INF/proguard/* (all files in the proguard meta inf directory)
**/.svn/** (all .svn directory contents)
**/CVS/** (all CVS directory contents)
**/SCCS/** (all SCCS directory contents)
**/.* (all UNIX hidden files)
**/.*/** (all contents of UNIX hidden directories)
**/*~ (temporary files)
**/thumbs.db
**/picasa.ini
**/protobuf.meta
**/about.html
**/package.html
**/overview.html
**/_*
**/_*/**

【讨论】:

【解决方案3】:

对于那些找不到PackagingOptions 的新文档链接的人。

这必须是对 LanDenLabs 答案的评论,但我不能在没有 50 个代表的情况下发表评论 :(

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-12
    相关资源
    最近更新 更多