1.注册友盟账号,使用友盟统计服务创建应用,获取appkey;
2.在build.gradle中添加对友盟库的依赖(android studio环境下):
compile 'com.umeng.analytics:analytics:latest.integration' //友盟分析
3.在manifest .xml文件声明appkey, 以及渠道占位符 ;
<meta-data
android:name="UMENG_APPKEY"
android:value="your appkey"
></meta-data> <!-- 友盟 app key-->
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}"
></meta-data> <!-- 渠道号-->
4.在gradle 中动态替换掉占位符value 即可;代码如下:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// 输出apk名称为appname_v1.0_2017-02-13_09_wandoujia.apk ,此处可自定义打包后的名字
// 下面的appname改为你自己的app name
def fileName = "keeplearn${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
}
注:在使用此配置的时候,应该放置在调用此配置代码之前,build跟程序代码中编译顺序不一样
//添加签名文件配置
signingConfigs{
//为release包添加签名文件配置
release{
keyAlias 'keeplearn'
keyPassword 'yourpwd'
storeFile file('your jks file address')
storePassword 'yourpwd'
}
debug{}
}
注:这个方法的使用注意目录结构, 放在android{} 之上
def releaseTime() {
return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
}
//此处添加你要上传的应用市场
productFlavors{
xiaomi{
manifestPlaceholders=[UMENG_CHANNEL_VALUE: "xiaomi"]
}
wandoujia{
manifestPlaceholders=[UMENG_CHANNEL_VALUE: "wandoujia"]
}
}
5.在控制台使用 ./gradlew assembleRelease 自动打出所有渠道的包,在project状态下的目录结构outputs/apk 可以看到打包结果。控制台成功打包后的截图如下:
参考资料:
http://stackoverflow.com/questions/22790801/android-gradle-signingconfig-error
如有问题可留言,将及时回复,have fun ...