友盟多渠道打包
在项目中会要这种情况,发布版本的时候需要像各个渠道发布版本,那就要打相应版本的包,一个一个的打实在是太费劲,效率又低,这时就可以用多渠道打包啦
友盟多渠道打包
多渠道打包的方式很多,比如360的,美团大众点评的,我们用的是友盟的多渠道打包
添加依赖
在gradle中添加
compile 'com.umeng.analytics:analytics:latest.integration'
接下来
signingConfigs {
signConfig {
keyAlias 'XXXX'
keyPassword 'paaword'
storeFile file('../key.jks') //签名文件 目录
storePassword 'paaword'
}
}
然后
buildTypes {
release { //realease 版 也可以配置debug版
minifyEnabled false //混淆
multiDexEnabled true
signingConfig signingConfigs.signConfig
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
Next
//渠道配置
productFlavors {
sk100 {
buildConfigField ‘String’, ‘CHANNEL_SPID’, ‘“100”’
buildConfigField ‘String’, ‘CHANNEL_SALT’, ‘“290e0d6629511568”’
manifestPlaceholders = [UMENG_CHANNEL_VALUE: “100”]
}
sk402 {
buildConfigField ‘String’, ‘CHANNEL_SPID’, ‘“402”’
buildConfigField ‘String’, ‘CHANNEL_SALT’, ‘“d90cb728a3bb264e”’
manifestPlaceholders = [UMENG_CHANNEL_VALUE: “402”]
}
}
默认的渠道设置
defaultConfig {
applicationId "包名"
minSdkVersion 16
targetSdkVersion 25
versionCode 31
versionName "3.0.1"
multiDexEnabled true
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "100"]//添加一个默认渠道号}
输出的包名字设置
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
def fileName
if (outputFile != null && outputFile.name.endsWith('.apk')) {
if (variant.buildType.name == 'release') {
fileName = "包名" + productFlavors.name + "v${defaultConfig.versionName}.apk"
} else if (variant.buildType.name == 'debug') {
fileName = "包名" + productFlavors.name + "v${defaultConfig.versionName}.apk"
}
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
Manifest中的配置
常用的一些权限添加
<meta-data
android:name="UMENG_APPKEY"
android:value="XXXXXXXXXXX" />
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
最在在AS自带的Terminal中输入
gradlew assembleRelease
就会在builid/output中生成包啦
打包的时候有可能会出现 Unsupported major.minor version 52.0
的问题,jdk改成1.8并且把gradle版本改成与AS对应的版本就可以啦