gradle打包分编译环境

gradle打包分测试、开发、生产环境

复制代码
buildTypes {
    debug {
        signingConfig signingConfigs.myConfig
        buildConfigField("boolean", "isDebug", "true")
    }
    release {
        signingConfig signingConfigs.myConfig//不要忘了要在release的时候加入我么的签名配置信息
        minifyEnabled true
        buildConfigField("boolean", "isDebug", "false")
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

//创建两个维度的 flavor
flavorDimensions "channel", "server"

productFlavors {
    xuehu { dimension "channel" }
//        yybao { dimension "channel" }
//        wandoujia {}
//        baidu {}
//        c360 {}
//        uc {}
//        xiaomi {}
//        lenovo {}
//        samsung {}
//        dev10086 {}
//        open189 {}
//        wo {}
//        huawei {}
//        oppo {}
//        vivo {}
//        flyme {}
//        gionee {}

    dev {
        dimension "server"
        buildConfigField("String", "APP_URL", '"https://dev.app.xuehu365.com/"')
        buildConfigField("String", "WAP_URL", '"https:/m.dev.app.xuehu365.com/"')
        buildConfigField("String", "H5_URL", '"https://dev.s.xuehu365.com/"')
        buildConfigField("boolean", "isEncode", "false")
        buildConfigField("boolean", "isOpenUmeng", "false")
        buildConfigField("String", "APPId", '"test"')
        buildConfigField("String", "JPushAlias", '"dev_"')
        buildConfigField("String", "JPushTags", '"dev"')
        android.applicationVariants.all { variant ->
            variant.outputs.each { output ->
                def file = output.outputFile
                output.outputFile = new File(file.parent, file.name.replace(file.name,
                        variant.productFlavors[0].name + "_" +
                                variant.versionName
                                + "_dev.apk"))
            }
        }
    }
    detect {
        dimension "server"
        buildConfigField("String", "APP_URL", '"https://test-app.xuehu365.com/"')
        buildConfigField("String", "WAP_URL", '"https://test-m.xuehu365.com/"')
        buildConfigField("String", "H5_URL", '"https://test-s.xuehu365.com/"')
        buildConfigField("boolean", "isEncode", "false")
        buildConfigField("boolean", "isOpenUmeng", "false")
        buildConfigField("String", "APPId", '"test"')
        buildConfigField("String", "JPushAlias", '"test_"')
        buildConfigField("String", "JPushTags", '"test"')
        android.applicationVariants.all { variant ->
            variant.outputs.each { output ->
                def file = output.outputFile
                output.outputFile = new File(file.parent, file.name.replace(file.name,
                        variant.productFlavors[0].name + "_" +
                                variant.versionName
                                + "_test.apk"))
            }
        }
    }
    prod {
        dimension "server"
        buildConfigField("String", "APP_URL", '"https://app.xuehu365.com/"')
        buildConfigField("String", "WAP_URL", '"https://m.xuehu365.com/"')
        buildConfigField("String", "H5_URL", '"https://s.xuehu365.com/"')
        buildConfigField("boolean", "isEncode", "true")
        buildConfigField("boolean", "isOpenUmeng", "true")
        buildConfigField("String", "APPId", '"xuehu"')
        buildConfigField("String", "JPushAlias", '""')
        buildConfigField("String", "JPushTags", '"prd"')
        android.applicationVariants.all { variant ->
            variant.outputs.each { output ->
                def file = output.outputFile
                output.outputFile = new File(file.parent, file.name.replace(file.name,
                        variant.productFlavors[0].name + "_" +
                                variant.versionName
                                + "_prod.apk"))
            }
        }
    }
    productFlavors.all {
        flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
    }
}
复制代码

 

posted @   嘉禾世兴  阅读(445)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示