Android Studio Gradle多渠道打包

第一步:配置AndroidManifest.xml

<meta-data android:name="UMENG_CHANNEL" android:value="umeng" />

如果没有多渠道打包的话,我们需要每次修改android:value="umeng",然后一次次的重新打包。

如果使用Gradle多渠道打包的话,我们需要把 value 的值设置成:

<meta-data    android:name="UMENG_CHANNEL"    android:value="${UMENG_CHANNEL_VALUE}" />
其中${UMENG_CHANNEL_VALUE}中的值就是你在gradle中自定义配置的值。


第二步:在build.gradle设置productFlavors

productFlavors {
     wandoujia {
          manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
     }

     xiaomi{
          manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
     }

     qq {
          manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qq"]
     }

     _360 {
          manifestPlaceholders = [UMENG_CHANNEL_VALUE: "360"]
     }

}


其中[UMENG_CHANNEL_VALUE: “wandoujia”]就是对应${UMENG_CHANNEL_VALUE}的值

可以将代码简化成:

android { 
    productFlavors {
        wandoujia{}
        xiaomi{}
        qq{}
        _360 {}
    } 

    productFlavors.all { 
        flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] 
        }
}

其中name的值对相对应各个productFlavors的选项值,这样就达到自动替换渠道值的目的了。

这样生成apk时,选择相应的Flavors来生成指定渠道的包就可以了,而且生成的apk会自动帮你加上相应渠道的后缀,非常方便和直观。大家可以自己反编译验证。


第三步: 生成渠道包

Android Studio中的下方底栏中有个命令行工具Terminal,你也可以直接打开,输入命令:


gradle assembleRelease

也可以 使用CMD命令,进入到项目所在的目录,直接输入命令(注意 :需要配置gradle 的环境变量


第四步: 在 build.gradle 进行签名配置

//签名
signingConfigs{
     release {
          storeFile file("keystore路径")
          storePassword "keystore密码"
          keyAlias "别名"
          keyPassword "别名密码"
     }
}

buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }

第五步:修改导出包的APK名称

当我们的渠道包多起来以后为了方便运营人员查看和投放市场, 所以我们需要根据渠道自定义apk的名称:

android {

     buildTypes {

        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
            //输出文件格式
            applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    def outputFile = output.outputFile
                    def fileName = outputFile.name.replace("app", readApkName() + "-" + defaultConfig.versionName + "-" + releaseTime())
                    def file = new File(outputFile.parent, fileName)
                    if (file.exists()) {
                        file = new File(outputFile.parent, fileName.replace("-release", "2-release"))
                    }
                    output.outputFile = file
                }
            }
        }

}

最后打包完成之后,apk文件就会生成在项目的build\outputs\apk下。


最后:完整的Gradle 代码

android { 
signingConfigs{
     release {
          storeFile file("keystore路径")
          storePassword "keystore密码"
          keyAlias "别名"
          keyPassword "别名密码"
     }
}
 buildTypes {

        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
            //输出文件格式
            applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    def outputFile = output.outputFile
                    def fileName = outputFile.name.replace("app", readApkName() + "-" + defaultConfig.versionName + "-" + releaseTime())
                    def file = new File(outputFile.parent, fileName)
                    if (file.exists()) {
                        file = new File(outputFile.parent, fileName.replace("-release", "2-release"))
                    }
                    output.outputFile = file
                }
            }
        }
 productFlavors {
        wandoujia {}
        xiaomi {}
        yingyongbao {}
        360 {}
    } 

    productFlavors.all { 
        flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] 
        }



 
 
 
 
 Gradle 中其他和打包不相关的代码以省略,如需使用请将代码按段复制进相关节点里!



最后,喜欢的同学可以关注我的微信公众号,我会不定期的写一些相关的文章,吹一些牛逼、砍一些大山、来一些心灵鸡汤、搞一些不为人知的故事



               ↑↑↑↑↑识别他、关注他↑↑↑↑↑



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值