android studio 多渠道打包

最近做了个混合开发的app,现在马上做完要上线了。发现自己只会简单的打包,什么多渠道打包都还不会。然后就各种查找了,好了,现在做好了。自己也写个博客记录下,,毕竟就我这记性.....

首先呢,在AndroidManifest.xml中配置如下值:

<meta-data
        android:name="UMENG_CHANNEL"
        android:value="${UMENG_CHANNEL_VALUE}" />

value值就是渠道标识来的,例如360,baidu,tencent什么的。在这里就不直接写某个渠道名,而是写一个占位符霸占住,到时在build.gradle中进行配置,之后gradle编译的时候就会动态的把这个占位符给换掉。

好了,接下来该在build.gradle中配置啦。

1、先在androdid{}中添加 flavorDimensions "versionCode"。配个图吧,清楚一点,往下看:

至于为什么要添加这句,em....我之前就是没加这句,结果就报Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/了

2、还是在androdid{}里写的。

    signingConfigs {
        debug {
            keyAlias 'xxx'
            keyPassword '123123'
            storeFile file('xxx.jks')
            storePassword '123123'
        }
        release {
            keyAlias 'xxx'
            keyPassword '123123'
            storeFile file('xxx.jks')
            storePassword '123123'
        }
    }
    buildTypes {
        release {
            // 启用混淆代码的功能
            minifyEnabled true
            //压缩对齐生成的apk包
            zipAlignEnabled true
            //指定混淆规则,需要压缩优化的混淆要把proguard-android.txt换成proguard-android.txt
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //移除无用的资源文件
            shrinkResources true
            //启用multidex的支持
            multiDexEnabled true
            signingConfig signingConfigs.release
            //自定义输入框配置
            /*
            Android plugin 3.0 不建议使用这样的写法
            applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    def outputFile = output.outputFile
                    if (outputFile != null && outputFile.name.endsWith('.apk')) {
                        //输入框apk
                        def fileName = "xx_v${defaultConfig.versionCode}.apk"
                        output.outputFile = new File(outputFile.parent, fileName)
                    }
                }
            }*/
            applicationVariants.all { variant ->
                variant.outputs.all{
                    //输入apk
                    def fileName = "xx_v${defaultConfig.versionCode}.apk"
                    outputFileName = fileName
                }
            }
        }

        debug {
            minifyEnabled true
            signingConfig signingConfigs.debug
        }
    }

    productFlavors {
        huawei {}
        tencent {}
//    kuan {}
//    xiaomi {}
//    qh360 {}
//    baidu {}
//    wandoujia {}
    }

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

最后sync now就好了,打包的时候就可以看到添加的huawei和tencent的渠道名啦。如图:

猜你喜欢

转载自blog.csdn.net/qq_23934247/article/details/81810657