zoukankan      html  css  js  c++  java
  • 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呢?

    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
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    matlab:画二维正态分布密度函数图
    几个机器学习上的概念
    相似性度量
    二分图最大匹配问题
    过三关(tictactoe)游戏的LIBSVM解决方法
    关于二分图的一些概念
    用NSZombieEnabled解决恼人的EXC_BAD_ACCESS错误
    SMARTARM2200 ADS工程在IAR EWARM 5.3上的移植(1)启动代码(cstartup.s)分析
    iOS开发-用ZipArchive添加和解压zip包
    iOS程序内进入 App Store 打分的代码
  • 原文地址:https://www.cnblogs.com/Im-Victor/p/11005270.html
Copyright © 2011-2022 走看看