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呢?

  1. 如果配置的文件目录是针对资源文件,即: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下的资源文件。
  1. 如果sourceSets配置的文件是针对源码文件,assets目录下的文件,layout布局文件,则不会是合并,而是根据上面提到的优先级挑选一个打包到apk里。

作者:yuenxm
链接:https://www.jianshu.com/p/2e07298e838f
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

gradle上sourceSets配置&同名文件合并问题的更多相关文章

  1. git---怎样将分支上的一个单文件合并到主分支上(master)

    一.首先切换到主分支  注意将分支上的数据全部提交 以免造成数据冲突或丢失 git checkeout master 二.选择要合并的文件 git checkout --patch 分支名称  要合并 ...

  2. hadoop 将HDFS上多个小文件合并到SequenceFile里

    背景:hdfs上的文件最好和hdfs的块大小的N倍.如果文件太小,浪费namnode的元数据存储空间以及内存,如果文件分块不合理也会影响mapreduce中map的效率. 本例中将小文件的文件名作为k ...

  3. Android多版本flavor配置之资源文件和清单文件合并介绍

    知识背景 Android studio升级到3.0之后,gradle增加了多维度管理配置,便于同一个项目中创建应用的不同版本,分别管理依赖项并签署配置.创建产品风味与创建构建类型类似:只需将它们添加到 ...

  4. grunt配置太复杂?使用Qbuild进行文件合并、压缩、格式化等处理

    上次简单介绍了下Qbuild的特点和配置,其实实现一个自动化工具并不复杂,往简单里说,无非就是筛选文件和处理文件.但Qbuild的源码也并不少,还是做了不少工作的. 1. 引入了插件机制.在Qbuil ...

  5. 013_HDFS文件合并上传putmarge功能(类似于hadoop fs -getmerge)

    场景 合并小文件,存放到HDFS上.例如,当需要分析来自许多服务器的Apache日志时,各个日志文件可能比较小,然而Hadoop更合适处理大文件,效率会更高,此时就需要合并分散的文件.如果先将所有文件 ...

  6. java-spring-mvc_上傳下載文件配置及controller方法

    下载: 1.在spring-mvc中配置(用于100M以下的文件下载) <bean class="org.springframework.web.servlet.mvc.annotat ...

  7. Windows上的文件合并命令

    从Linux转到Windowns后,发现很多好用的shell命令都没有了,但实际情况是Windows一样有DOS时代的命令窗口,在CLI年代用DOS的人也要干活. 比如,今天想将几个单独的sql文件整 ...

  8. (配置)CKEditor+CKFinder+php上传配置,根据年月命名创建文件夹来存放

    CKEditor+CKFinder+php上传配置 新版本的CKEditor只提供了基本的文本编辑功能,上传模块由另一个组件CKFinder.这里主要记录CKFinder上传的一些参数配置,能够成功上 ...

  9. SpringMVC 文件上传配置,多文件上传,使用的MultipartFile(转)

    文件上传项目的源码下载地址:http://download.csdn.net/detail/swingpyzf/6979915   一.配置文件:SpringMVC 用的是 的MultipartFil ...

随机推荐

  1. jQuery_完成表格的隔行换色

    表格的颜色一样不利于区分,而利用jQuery则可以很方便的进行表格的隔行换色操作,原表如下: 这样看着很不方便,但是隔行换色之后非常便捷清楚. 代码如下: <!DOCTYPE html> ...

  2. free查看内存使用情况

    查看当前内存使用情况 [xiaoxi@xiaoxitest data]$ free -m total used free shared buffers cached Mem: -/+ buffers/ ...

  3. maven 配置私服 连接

    两种方法: 1.在单个项目的pom.xml中使用 私服的连接地址,这样只对该项目起作用. 2.在maven的setting.xml配置中添加私服的连接地址.这样对所有项目起作用. 本文章只演示第二种方 ...

  4. send()/ recv() 和 write()/ read()

    Linux下数据的接收和发送write()/ read() Linux 不区分套接字文件和普通文件,使用 write() 可以向套接字中写入数据,使用 read() 可以从套接字中读取数据. 两台计算 ...

  5. saml2协议sp-initial登录过程

    登录过程如下所示: 一次完整的saml认证过程,包括一次samlrequest和samlresponse, 首先用户如果想访问一个sp,sp会先检验用户是否登录,如果用户已经登录,即可以正常访问sp的 ...

  6. Jquery Ajax调用asmx出错问题

    1.//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释.      [System.Web.Script.Services.ScriptService] 这个 ...

  7. maven setting.xml文件配置详情

    1 首先,setting.xml一般存在与两个地方:maven的安装目录/conf/,和${user.home}/.m2/下.他们的区别是在maven安装目录下的setting.xml是所有用户都可以 ...

  8. centos7:Kafka集群安装

    解压文件到安装目录 tar -zxvf kafka_2.10-0.10.2.1.tgz 1.进入目录 cd kafka_2.10-0.10.2.1 mkdir logs cd config cp se ...

  9. python每日一练:0014题

    第 0014 题: 纯文本文件 student.txt为学生信息, 里面的内容(包括花括号)如下所示: { "1":["张三",150,120,100], &q ...

  10. 【Python基础】_1 Python简介

    1 Python简介 Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项 ...