Skip to content

Latest commit

 

History

History
108 lines (78 loc) · 3.48 KB

多渠道版本发布.md

File metadata and controls

108 lines (78 loc) · 3.48 KB

多渠道版本发布

[TOC]

什么是多渠道

多渠道是指在不同的渠道、商店发布 App 版本,每个版本可以有相同或者不同的配置(如不同的 icon 或者应用名),但是渠道号也就是 Channel 不同

多渠道配置

在 app 的 build.gradle中配置 13 个主流渠道:

android {

    flavorDimensions "default"
    productFlavors {
    //这里其实是可以用中文名的
        XiaoMi {}
        BaiduZhuShou {}
        AnZhi {}
        MeiZu {}
        Smartisan {}
        WanDouJia {}
        YingYongBao {}
        "360" {}
        HuaWei {}
        CoolApk {}
        GooglePlay {}
        VIVO {}
        OPPO {}
    }
    //所有渠道的 CHANNEL_VALUE 设为渠道名
    productFlavors.all { flavor ->
        flavor.manifestPlaceholders = [CHANNEL_VALUE: name]
    }
    
}

productFlavors表示不同的渠道,每个渠道的括号内可以分别设置不同的属性,例如不同的包名:

        XiaoMi {
        	//最低只支持19的版本
        	minSdkVersion 19
        	//默认包名后面加上 .xiaomi 后缀
        	applicationIdSuffix ".xiaomi"
		}

自定义 BuildConfig 值

    defaultConfig {
        applicationId "nutstore.android.cad"
 		 		
        buildConfigField("int", "CODE", "123")
        buildConfigField("Boolean", "IS_DEFAULT", "true")        
        buildConfigField("String", "URL", "\"https://www.jianguoyun.com/\"")
    }

注意当该属性为 String 时,值需要加上 " 转义。配置完最好去该包名下的 BuildConfig 文件中确认。配置好就可以在代码中调用BuildConfig.XXX(就像 VERSION_NAME 一样)以使用。defaultConfig中是默认配置,如果需要针对不同渠道进行不同的参数配置,可以这样:

        XiaoMi {
        	buildConfigField("Boolean", "IS_DEFAULT", "false")
        }

在代码中 获取 Channel

BuildConfig.FLAVOR是 productFlavor 也就是渠道的值。

在 Manifest 文件中获取 Channel

build.gradle 中的manifestPlaceholders为在 Manifest 文件中使用的占位符。以友盟统计为例,需要在 Manifest 加上:

        <meta-data android:name="UMENG_APPKEY" android:value="597f00b9717c1929f3xxxxxx"/>
        <meta-data android:name="UMENG_CHANNEL" android:value="${CHANNEL_VALUE}"/>

其中,UMENG_CHANNEL 的 value 使用的就是在 build.gradle 中定义的占位符的值${CHANNEL_VALUE}。也就是说这个值就是当前 apk 的productFlavor的名字(如 Xiaomi )

针对渠道使用不同的资源

AS 中,默认的源文件在main/下,要针对不同的渠道采用不同的资源文件甚至不同代码,需要创建相应的文件夹。点击 AS 右侧的Gradle按钮,找到 app 模块,找到Tasks--Android--sourceSets并双击执行该 Task,AS 便会打印出针对不同渠道你需要创建的文件夹。例如:

XiaoMi
------
Java sources: [app/src/XiaoMi/java]
Manifest file: app/src/XiaoMi/AndroidManifest.xml
Android resources: [app/src/XiaoMi/res]
Assets: [app/src/XiaoMi/assets]
JNI libraries: [app/src/XiaoMi/jniLibs]

多渠道打包以及测试

AS 中,点击 Build--Generate Signed Apk,选择正确的Keystore文件并输入密码和别名,点击下一步,选择相应的渠道(使用 Shift 进行多选),生成 APK。

如果集成了统计 SDK,在安装该渠道的 apk 后,后台应该有该渠道的数据。有数据则证明:SDK 集成正确,该 APK 的渠道是正确的。