Android Studio分渠道打包

今天一个小伙伴问我如何分渠道打包,我翻了翻之前的工程,找了一个Demo给他。基本步骤还是比较简单的。
环境: 使用Android studio 或者直接用Gradle
  1. 在AndroidManifest.xml中增加一个 placeholder, placeholder的名称由你使用的统计服务而定,如果你用的是友盟,那么需要添加一个 meta-data 如下所示:
    <meta-data
        android:name="UMENG_CHANNEL"    
        android:value="${CHANNEL_VALUE}" />
    友盟用的名字是 UMENG_CHANNEL

  2. 修改项目的 gradle文件, 在gradle里面添加下面的代码
android {
.. .. ..
    productFlavors {
        shb {}
        qq {}
        wandoujia {}
        baidu {}
        c360 {}
        huawei {}
        xiaomi {}
        lenovo {}
        meizhu {}
    }
    productFlavors .all {  flavor  ->
        flavor .manifestPlaceholders  = [ CHANNEL_VALUE: name]
    }
.. .. ..
}
productFlavors  里面是不同分支包的配置情况
flavor -> flavor.manifestPlaceholders = [ CHANNEL_VALUE: name]  是把AndroidManifest.xml 里面的 "${CHANNEL_VALUE}"
替换成自己定义的名字。

  1. 不同渠道的APK文件自动用不同的名称
    不同的包用不同的名称也是为了方便自己管理包文件。我们希望APK生成的名称格式是:  软件名称-VersionCode-VersionNumber-渠道名称.apk
我们需要在gradle里添加下面的代码 
    buildTypes {
        release {
            applicationVariants .all {  variant  ->
                variant .outputs .each {  output  ->
                    def flavor  =  "default";
                    if (variant .productFlavors .size()  >  0)
                        flavor  = variant .productFlavors .get( 0);

                    def date  =  new  Date();
                    def formattedDate  = date .format( 'yyyyMMdd')
                    def versionCode  = variant .versionCode
                    def versionName  = defaultConfig .versionName
                    def file  = output .outputFile

                    println variant
                    println versionName

                    def finalName  =  "Release-"  + versionCode  +  "-v"  + versionName  +  "-"  + flavor .name  +  ".apk"
                    output .outputFile  =  new  File(file .parent, finalName)
                }
            }

        }

别忘了在 Gradle 里面定义版本号,如下:
   defaultConfig {
        versionCode  50
        versionName  "1.1.04.23"
    }

到这里,该添加的代码都添加了。
运行一下看看,在菜单: build->Generate Signed APK
在菜单里面选择需要的渠道。


哈哈,这就可以把生成的打包文件提供给运营使用了。

你可能感兴趣的:(Android,技术文章)