Gradle android优化packagingOptions

Red*_*wid 1 android gradle android-gradle-plugin

我有那个项目结构:

-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
Run Code Online (Sandbox Code Playgroud)

在每个客户端构建文件中,我都要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'
}
Run Code Online (Sandbox Code Playgroud)

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

Red*_*wid 12

找到解决方案 致谢: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'
        }
    }
Run Code Online (Sandbox Code Playgroud)

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

apply from: "${rootDir}/android_common.gradle"
Run Code Online (Sandbox Code Playgroud)

最后从我的客户端排除packagingOptions构建文件.另外,我在那里移动了另一种常见配置.之后看起来干净,简单,美观.


Lan*_*abs 5

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

请参阅PackagingOptions Gradle 文档

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
**/_*
**/_*/**
Run Code Online (Sandbox Code Playgroud)