手把手教你AndroidStudio多渠道打包

感谢博主:http://blog.csdn.net/mynameishuangshuai/article/details/51783303  

             及  https://blog.csdn.net/miao309410364/article/details/48345463

根据博主做出修改:在Android studio 3.0 版本一会我们会 报错下面就好好说说我们是怎么解决的

说到多渠道,这里不得不提一下友盟统计,友盟统计是大家日常开发中常用的渠道统计工具,而我们的打包方法就是基于友盟统计实施的。按照友盟官方文档说明,渠道信息通常需要在AndroidManifest.xml中配置如下值:

(一)在AndroidManifest.xml里设置动态渠道变量 在application中

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

(二)在build.gradle设置productFlavors

android {
        productFlavors {
            kuan {
                manifestPlaceholders = [UMENG_CHANNEL_VALUE: "kuan"]
            }
            xiaomi {
                manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
            }
            qh360 {
                manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qh360"]
            }
            baidu {
                manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
            }
            wandoujia {
                manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
            }
        }
    }
亦或者是 用法都是一样的

 android {
        productFlavors {
            kuan {}
            xiaomi {}
            qh360 {}
            baidu {}
            wandoujia {}
        }

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

(三)执行打包操作

 1.在AndroidStudio菜单栏点击Build菜单–>Generate signed APK–>选择key,并输入密码 

2.然后下一步,选择打包渠道

此时这里的APK包名显示为unsigned,也就是说未签名,我们可以继续在build.gradle文件中配置签名信息
signingConfigs {
        release{
            storeFile file("../wooyun_keystore") //签名文件路径
            storePassword "123456"
            keyAlias "123456"
            keyPassword "123456"  //签名密码
        }
    }
 
注意了!错误的解决 我们的程序报错
Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensi
个问题是Android studio升级到3.0之后,运行的时候会提示gradle要升级到3.5版本才能编译。于是我把我的gradle升级到了
 gradle-4.1-milestone-1 版本,是2017年7月份最新版本了。

插件3.0.0包含一个新的依赖机制,它在使用库时自动匹配变量。
这意味着应用程序的调试变体会自动地消耗一个库的调试变量,等等。它也可以在使用类黄的时候起作用——
一个应用程序的redDebug变体将消耗一个库的redDebug变体。为了完成这项工作,插件现在要求所有的味道都属于
一个命名的味道维度,即使你只打算使用一个维度。否则,您将得到以下构建错误:


解决办法在我们的 在build.gradle设置中 写 flavordimensions "这里就是我们指定的"

 flavorDimensions "UMENG_CHANNEL_VALUE"


大致是说,Plugin 3.0.0之后有一种自动匹配消耗库的机制,便于debug variant 自动消耗一个库,然后就是必须要所有的flavor 都属于同一个维度。
为了避免flavor 不同产生误差的问题,应该在所有的库模块都使用同一个foo尺寸。
= 。=还是懵逼。说一堆依然不是很理解。
但是我们从中已经知道解决方案了:
在主app的build.gradle里面的
 defaultConfig {
 targetSdkVersion:***
minSdkVersion :***
versionCode:***
 versionName :***
//版本名后面添加一句话,意思就是flavor dimension 它的维度就是该版本号,这样维度就是都是统一的了
flavorDimensions "versionCode"
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值