• 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
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    小程序swiper组件实现间距轮播
    小程序form静态页面跳转
    批量添加Iconfont图标库图标
    Vant Weapp 有赞小程序UI库 ICON 组件的本地图标路径支持
    $rootScope、$apply、$watch
    EF code first 数据模型创建数据库
    angularjs directive2
    angularjs directive
    angularjs service
    angular repeat
  • 原文地址:https://www.cnblogs.com/Im-Victor/p/11005270.html
Copyright © 2020-2023  润新知