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构建文件.另外,我在那里移动了另一种常见配置.之后看起来干净,简单,美观.
作为记录,您的大多数包选项已经是默认值。
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)