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目录下的文件,则相当于是一个额外的配置。打包的时候是会进行资源文件上的合并。
对资源会进行合并,有三种资源会进行合并:
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都有配置,按照上面优先级先找到的那个值被打包进去)
联系客服