Gradle多渠道打包应用apk

来源:互联网 发布:保护隐私的软件 编辑:程序博客网 时间:2024/05/17 15:59

1.背景:
apk可能要求有多种配置要求,比如访问的ip不同,配置文件资源不同等,这就要求可以一次性打包多个apk,避免手动多次打包;
2.原理:
a.在app的build.gradle文件种配置:

android {    ....    sourceSets {        //设置各个渠道的目录文件        main {            jniLibs.srcDirs = ['libs']        }        supion {            java.srcDirs = ['src/supion', 'src/supion/java', 'src/supion/java/']        }        hopeland {            java.srcDirs = ['src/hopeland', 'src/hopeland/java', 'src/hopeland/java/']        }    }    productFlavors {//两个渠道        hopeland {        }        supion {        }    }    //遍历productFlavors打包输出文件名    applicationVariants.all { variant ->        variant.outputs.each { output ->            def appName = 'Ioter'            def oldFile = output.outputFile            def buildName            variant.productFlavors.each { product ->                buildName = product.name            }            output.outputFile = new File(                    output.outputFile.parent + "/${variant.buildType.name}",                    appName + "-" + getDate() + "-" + "${variant.buildType.name}-${variant.versionName}-" + buildName + ".apk".toLowerCase())        }    }}def getDate() {    def date = new Date()    def formattedDate = date.format('yyyyMMddHHmm')    return formattedDate}

b.在代码目录下,创建各自渠道的文件目录(和main同级),
这里写图片描述
c.在各自渠道配置相同的文件DeviceUtil.java,在该文件种配置各自的资源。
注:在main目录种不能有DeviceUtil文件,原理是一个渠道中,main目录和渠道目录合并,如果相同就存在冲突了。

原创粉丝点击