Gradle android优化packagingOptions

时间:2014-07-29 12:38:55

标签: android gradle android-gradle

我有那个项目结构:

-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构建文件中? 我真的不想将其粘贴到所有客户端。

2 个答案:

答案 0 :(得分:11)

找到解决方案。 致谢: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。 另外,我在那里移动了另一种常见配置。 之后看起来干净,简单,漂亮。

答案 1 :(得分:1)

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

请参见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
**/_*
**/_*/**