感谢博主:http://blog.youkuaiyun.com/mynameishuangshuai/article/details/51783303
及 https://blog.youkuaiyun.com/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升级到了
个问题是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 :***
minSdkVersion :***
versionCode:***
versionName :***
//版本名后面添加一句话,意思就是flavor dimension 它的维度就是该版本号,这样维度就是都是统一的了
flavorDimensions "versionCode"
}