gradle上sourceSets配置&同名文件合并问题
gradle的sourceSets可以对不同的buildType, productFlavor,buildVariant设置不同的文件路径,进行多样化处理。
sourceSets{
main{
manifest.srcFile 'src/main/AndroidManifest.xml'
}
kaikai{
manifest.srcFile 'src/kaikai/AndroidManifest.xml'
}
}
一个工程项目里多个module或者多个buildType,productFlavor情况下,最后打包成一个apk,相关文件如何挑选打包进apk呢?
如果配置的文件目录是针对资源文件,即:AndroidManifest和values目录下的文件,则相当于是一个额外的配置。打包的时候是会进行资源文件上的合并。
- 当打包对应的buildType/productFlavor/buildVariant的apk包时候,资源文件合并是sourceSets/main下的资源+sourcesSets/{其他配置}。当资源名在上述资源集里唯一存在时,直接打包进apk,当有多个相同资源名的存在,按照一定的优先级选取资源名对应的值打包进去。这篇文很详细的介绍了Manifest和资源的合并。
对资源会进行合并,有三种资源会进行合并:
1.主资源集(src/main/)
2.构建变体(buildType、productFlavor、buildVariant)
3.三方依赖(aar)
当上述资源名在上述资源集里唯一存在时,直接打包进apk,当有多个相同的资源名存在,按照如下优先级选取值:
build variant > build type > product flavor > main source set > library dependencies
(即:如果资源名test_string在多个strings.xml都有配置,按照上面优先级先找到的那个值被打包进去)
- 当打包的是buildType/productFlavor/buildVariant在sourceSets下无特定配置的包时候,只取sourceSets/main下的资源文件。
- 如果sourceSets配置的文件是针对源码文件,assets目录下的文件,layout布局文件,则不会是合并,而是根据上面提到的优先级挑选一个打包到apk里。
作者:yuenxm
链接:https://www.jianshu.com/p/2e07298e838f
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
gradle上sourceSets配置&同名文件合并问题的更多相关文章
- git---怎样将分支上的一个单文件合并到主分支上(master)
一.首先切换到主分支 注意将分支上的数据全部提交 以免造成数据冲突或丢失 git checkeout master 二.选择要合并的文件 git checkout --patch 分支名称 要合并 ...
- hadoop 将HDFS上多个小文件合并到SequenceFile里
背景:hdfs上的文件最好和hdfs的块大小的N倍.如果文件太小,浪费namnode的元数据存储空间以及内存,如果文件分块不合理也会影响mapreduce中map的效率. 本例中将小文件的文件名作为k ...
- Android多版本flavor配置之资源文件和清单文件合并介绍
知识背景 Android studio升级到3.0之后,gradle增加了多维度管理配置,便于同一个项目中创建应用的不同版本,分别管理依赖项并签署配置.创建产品风味与创建构建类型类似:只需将它们添加到 ...
- grunt配置太复杂?使用Qbuild进行文件合并、压缩、格式化等处理
上次简单介绍了下Qbuild的特点和配置,其实实现一个自动化工具并不复杂,往简单里说,无非就是筛选文件和处理文件.但Qbuild的源码也并不少,还是做了不少工作的. 1. 引入了插件机制.在Qbuil ...
- 013_HDFS文件合并上传putmarge功能(类似于hadoop fs -getmerge)
场景 合并小文件,存放到HDFS上.例如,当需要分析来自许多服务器的Apache日志时,各个日志文件可能比较小,然而Hadoop更合适处理大文件,效率会更高,此时就需要合并分散的文件.如果先将所有文件 ...
- java-spring-mvc_上傳下載文件配置及controller方法
下载: 1.在spring-mvc中配置(用于100M以下的文件下载) <bean class="org.springframework.web.servlet.mvc.annotat ...
- Windows上的文件合并命令
从Linux转到Windowns后,发现很多好用的shell命令都没有了,但实际情况是Windows一样有DOS时代的命令窗口,在CLI年代用DOS的人也要干活. 比如,今天想将几个单独的sql文件整 ...
- (配置)CKEditor+CKFinder+php上传配置,根据年月命名创建文件夹来存放
CKEditor+CKFinder+php上传配置 新版本的CKEditor只提供了基本的文本编辑功能,上传模块由另一个组件CKFinder.这里主要记录CKFinder上传的一些参数配置,能够成功上 ...
- SpringMVC 文件上传配置,多文件上传,使用的MultipartFile(转)
文件上传项目的源码下载地址:http://download.csdn.net/detail/swingpyzf/6979915 一.配置文件:SpringMVC 用的是 的MultipartFil ...
随机推荐
- mac 的 ping 命令怎么停掉?
Widnows下的Ping不会只Ping4次,mac 会不停的Ping下去,需要停止,按下键盘上的 control+c 键即可停掉 Ping 过程.
- wordcloud:让你的词语像云朵一样美
介绍 对文本中出现频率较高的关键词给予视觉化的显示 使用 python import jieba import codecs import wordcloud file = r"C:\U ...
- Android处理未捕获的异常(应用全局异常)
public class CrashHandler implements UncaughtExceptionHandler { private static CrashHandler instance ...
- 使用kibana构建各种图
1.3.1:建立索引 以下命令来为莎士比亚数据集设置 mapping(映射): curl -XPUT http://hadoop01:9200/shakespeare -d '{ "mapp ...
- i++ 是线程安全的吗
相信很多中高级的 Java 面试者都遇到过这个问题,很多对这个不是很清楚的肯定是一脸蒙逼.内心肯定还在质疑,i++ 居然还有线程安全问题?只能说自己了解的不够多,自己的水平有限. 先来看下面的示例来验 ...
- linux系统PS命令,按CPU、内存使用率对进程排序
https://blog.csdn.net/weixin_42123737/article/details/90081318
- linux系统下自动删除前N天的日志文件
删除文件命令: find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \; 实例命令: find /opt/soft/log/ -mti ...
- P1364 医院设置 (补锅,memset初始化较大值不可用0x7fffffff )
P1364 医院设置 题解 弗洛伊德水过 注意初始化一个大数 0x3f 可以,0x5f 好像也可以,但是0x7fffffff 我是真的炸了,初始化为-1 (后面补锅有详细解释) 代码 #include ...
- (转)使用NMAP工具扫描端口
原文:http://www.linuxde.net/2013/02/12354.html nmap 是一个用于网络探索或安全评测的工具.它支持 ping 扫描(判定哪些主机在运行),多端口扫描技术(判 ...
- 阶段3 1.Mybatis_01.Mybatis课程介绍及环境搭建_07.环境搭建的注意事项
2 resources下面创建目录要一级一级的创建,下面这个创建的就是一级目录而不是三级 在文件夹下看到的目录也是一级的 因此这里创建目录需要一个个的去创建 配置文件和dao类这两个目录要保持一致,这 ...