多渠道打包紧需三步

转自:https://blog.csdn.net/u011254881/article/details/52036754
 

由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你打几十个市场的包岂不烦死了,不过有了Gradle,就可以很方便的一键进行多渠道打包。

百度多渠道打包
此文将以项目中使用的百度统计为例,进行gradle配置多渠道打包讲解。使用其他友商进行多渠道打包同理。废话不多说,马上进入正题。

androidManifest中有这么一段代码,其中百度统计给的备注很明朗了,name字段无需更改,不同的渠道只要修改value即可。


在AndroidManifest中配置PlaceHolder,将value的值修改为${BAIDU_CHANNEL_VALUE},当然BAIDU_CAHNNEL_VALUE只是一名字而已,你也可以换成你喜欢的名字。目的就是要让我们的这个value在进行多渠道打包的时候自动变更。

在项目gradle中配置各种渠道号,这里"android"、"android_sougou"等等就是你的渠道号,各自要求的渠道标志不一样,可以根据自己的项目进行命名。
 

放在defaultConfig里面:

flavorDimensions "api"

放在android里面: 

  android {
    // 你的其他gradle配置信息省略...
 
    // 配置所有的渠道名,如需增加其他渠道,则以类似的形式在productFlavors里面添加对应的即可
    productFlavors {
            android {
                manifestPlaceholders = [BAIDU_CHANNEL_VALUE: "android"]
            }
            android_sougou {
            manifestPlaceholders = [BAIDU_CHANNEL_VALUE: "android_sougou"]
            }
            android_huawei {
            manifestPlaceholders = [BAIDU_CHANNEL_VALUE: "android_huawei"]
            }
            android_pp {
            manifestPlaceholders = [BAIDU_CHANNEL_VALUE: "android_pp"]
            }
    }
    }

在项目gradle中配置在打包时的一些信息,例如显示log日志、还可以配置打包之后输出的apk文件名根据渠道命名、apk文件的输出位置等等。

android {
    // 其他的配置信息省略...
 
    buildTypes {
        release {
                minifyEnabled true
                shrinkResources true
                proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
                // 不显示Log
                buildConfigField "boolean", "LOG_DEBUG", "false"
 
                minifyEnabled false
 
                // 移除无用的resource文件
                shrinkResources true
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
 
                applicationVariants.all { variant ->
                    variant.outputs.each { output ->
                        def outputFile = output.outputFile
                        if (outputFile != null && outputFile.name.endsWith('.apk')) {
                        // 输出apk名称为app_v3.0(45)_pp.apk
                        def fileName = "app_v${defaultConfig.versionName}(${defaultConfig.versionCode})_${variant.productFlavors[0].name}.apk"
                        output.outputFile = new File(outputFile.parent, fileName)
                        }
                    }
                }
        }
}


利用AS的Generate Build进行多渠道打包
在gradle配置完成之后,那么就可以进行一键多渠道打包了,在AS中利用Generate build即可,打包开始之后,静默等待打包完成就行啦!具体操作如下截图:

图1 在AS的build菜单中选择generate signed apk

进入generate signed apk之后会让你输入密码,这个密码是本机用户管理你的签名文件密码用的,用于校验是否本人操作。如果你还没设置过的话,AS会提醒让你完成该密码设置的。

图2 输入master password

进入之后,需要你填入你这个apk的签名文件和密码,相信这个应该不用详细讲解了吧,按要求填入然后点击next按钮即可。

图3 填入签名文件和密码

完成签名文件输入点击下一步之后,最重要的页面来了。这里就是选择你要打包的类型,两个选择:release/debug,release和debug有些区别,release模式会比debug模式严格一些。然后flavors这里显示的就是你在gradle中配置的所有渠道啦。如果需要全部打包,就全选即可。如果个别打包的,就只要选中其中一个或多个打包就行。最后点击finish,静静等待打包完成吧!!打包的速度取决于你的机子性能和你项目的一些其他依赖等等。

图4 选择渠道打包

你可能感兴趣的:(多渠道打包紧需三步)