1. AndroidManifest 配置
application 节点中添加渠道配置。
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
name固定为友盟,value为渠道标识(随渠道变化)。
2. module 层的 build.gradle 配置
Android Studio 3.0 后 gradle 添加了 flavorDimensions 属性,用来控制多个版本的代码和资源,缺失会报错。
2.1 单版本打包
android {
...
defaultConfig {
...
flavorDimensions "versionCode" //版本规格,写死
}
...
productFlavors {
huawei {}
baidu {}
xiaomi {}
}
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
...
}
2.2 多版本打包
android {
...
flavorDimensions "dimension1","dimension2"
productFlavors {
huawei {
dimension "dimension1"
}
baidu {
dimension "dimension2"
}
xiaomi {
dimension "dimension2"
}
}
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
...
}
3. 自定义打包APK名称
android {
...
applicationVariants.all { variant ->
variant.outputs.all { output ->
def fileName = "我的应用v${variant.versionName}-${variant.productFlavors[0].name}-${variant.buildType.name}.apk"
def outFile = output.outputFile
if (outFile != null && outFile.name.endsWith('.apk')) {
outputFileName = fileName
}
}
}
...
}
4. 为渠道添加个性化配置
xiaomi {
//配置包名
applicationId "com.wdx.xiaomi"
//添加资源(以 string 为例,资源文件中不能有同名资源)
resValue "string", "new_string", "我是新添加的资源"
//添加 BuildConfig 变量(使用 BuildConfig.MY_PHONE_TYPE 调用)
buildConfigField "String", "MY_PHONE_TYPE", '"我是小米手机"'
}
5. 配置签名文件
- Build >> Generate signed APK
- Project Structure >> Signing 与 Build Types >> Gradle打包
第二种方法配置完会在 module 层的 build.gradle 文件中生成签名信息。
signingConfigs {
release {
keyAlias 'myJks'
storeFile file('../myJks.jks')
keyPassword = 111111
storePassword = 111111
v1SigningEnabled true
v2SigningEnabled true
}
}