androidstudio3.0之后多渠道打包

真的是慢一步,步步慢哇,15年的时候,公司有个同事就开始给我们普及多渠道打包,因为当时我就是看他不顺眼,所以也木有学。。想想有点后悔噻。。后来因为app上传的市场比较固定,都是一个一个打包的,多渠道打包出来那么久了,我竟然木有用过,昨天下午抽空了解下,感觉还处在皮毛,好多东西都是知其然,不知其所以然,昨天有童鞋推荐了美团的walle,网上搜集下资料,感觉还不错,好可惜,我们项目里面不让用。。。。
网上看的都不全,走了不少坑,虽然大家都说授人以鱼不如授人以渔,但是我想说,在着急实现功能的情况下,还是先给鱼比较好偷笑。。。
1.AndroidManifest.xml里面设置动态渠道变量:
    <meta-data android:name="CLM_CHANNEL_ID" android:value="${CLM_CHANNEL}" />
2.app下完整的build.gradle
apply plugin: 'com.android.application'
android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "app.clm.com.demoapp"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        flavorDimensions "1"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            //启用混淆代码的功能
            minifyEnabled true
            //压缩对齐生成的apk包
            zipAlignEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //移除无用的资源文件
            shrinkResources true
            //启用multidex的支持
            multiDexEnabled true
        }
    }
    productFlavors{
        xiaomi{ }
        google{}
        wandoujia{}
        baidu{}
        anzhi{}
        QQ{}
    }
    //输出渠道包的名字,例如 xx.apk(个人还木有完全理解这块为什么这么写??)
    android.applicationVariants.all{ variant ->
        variant.outputs.all{ output ->
            def outFile = output.outputFile
            if (outFile != null && outFile.name.endsWith(".apk")){
                //自定义想要生成的apk格式
                def fileName = "${variant.productFlavors[0].name}_${publishTime()}" + ".apk"
                outputFileName = fileName
            } } }
//批量处理
    productFlavors.all {
        flavor -> flavor.manifestPlaceholders = [CLM_CHANNEL: name]
    }
}
//渠道
def publishTime() {
    return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
}
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
3.如果同一个apk不同渠道要添加不同的包名可以在productFlavors里面实现,ForExample:
 xiaomi{
 applicationId "com.clm.cn"
          
       }
4.如果同一个apk不同渠道要添加不同的icon,资源可以这么实现:
在main的同级目录创建相同项目结构的不同渠道,然后把不同渠道的资源或icon替换掉(别人是这么说的,我还木有来得及测试)
可能这里面还存在很多我不知道的问题,如果您觉得有问题,欢迎吐槽~




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值