上一篇文章记录了使用美团walle实现多渠道打包的过程。这里再来记录一下友盟的多渠道打包。
要实现友盟多渠道打包只需要申请appkey即可。
并不需要sdk。当然,一般情况下,友盟统计 和 多渠道打包是一起使用的,所以可以引入:
compile 'com.umeng.analytics:analytics:latest.integration'
1、 在清单文件中配置:
<application>
...
<activity>
</activity>
...
<!--友盟---这里使用了动态配置,因为后面要配置多渠道-->
<meta-data
android:value="${UMENG_APPKEY}"
android:name="UMENG_APPKEY"/>
<meta-data
android:value="${UMENG_CHANNEL_VALUE}"
android:name="UMENG_CHANNEL"/>
</application>
2、在app的build.gradle中配置UMENG_APPKEY和 UMENG_CHANNEL_VALUE
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "27.0.2"
defaultConfig {
applicationId "com.ps.umengmaster"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
manifestPlaceholders = [UMENG_APPKEY: "59225e68310c9342160009d0"]//配置友盟appkey
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
//指定渠道
/*productFlavors {
baidu {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
}
wandoujia {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
//...
//...
//...
}*/
//批量处理
productFlavors {
default_channel{}
wandoujia{}
_360{}
yingyongbao{}
xiaomi{}
baidu{}
huawei{}
jifeng{}
}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [ UMENG_CHANNEL_VALUE:name ]
}
//指定打包的名称
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
File outputDirectory = new File(outputFile.parent);
def fileName
if (variant.buildType.name == "release") {
// fileName = "app_v${defaultConfig.versionName}_${packageTime()}_${variant.productFlavors[0].name}.apk"
fileName = "seven_${variant.productFlavors[0].name}.apk"
} else {
// fileName = "app_v${defaultConfig.versionName}_${packageTime()}_beta.apk"
fileName = "seven_${variant.productFlavors[0].name}_beta.apk"
}
output.outputFile = new File(outputDirectory, fileName)
}
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
/*umeng*/
compile 'com.umeng.analytics:analytics:latest.integration'
}
3、在项目根目录下,使用studio的Terminal执行打包命令:
gradlew assembleRelease
打出来的是Release包,效果如下:
备注:当然了,使用gradlew assembleDebug可以打debug包。
————-分割线——————————————————————-
对于打包,我们除了可以使用命令行之外,可以在studio中:
Build -> Generate Signed APK…
然后在弹出来的选择框中输入或选择对应的内容:
然后Next(一路往下)即可。