android 多渠道打包2

上一篇不同渠道包的升级类包名和类名完全一样,同名类替换的方式。这一篇试下工厂模式。

google play渠道目录下,新建GooglePlayUpdater以及UpdaterFactory:

GooglePlayUpdater类实现如下:

Kotlin 复制代码
package com.example.androiddemos.update

import android.app.Activity
import android.util.Log

class GooglePlayUpdater(private val activity: Activity) : IUpdateChecker {
    override fun check(activity: Activity) {
        // 使用Google Play的更新逻辑
        Log.d("GooglePlayUpdater", "Checking for updates on Google Play")
        // 待实现 ... ...
    }
}

UpdaterFactory实现如下:

Kotlin 复制代码
package com.example.androiddemos.update

import android.app.Activity

class UpdaterFactory {
    fun getUpdater(activity: Activity): IUpdateChecker = GooglePlayUpdater(activity)
}

同理, nomal渠道目录下,新建NormalUpdater代码如下:

Kotlin 复制代码
package com.example.androiddemos.update

import android.app.Activity
import android.util.Log

class NormalUpdater(private val activity: Activity) : IUpdateChecker {
    override fun check(activity: Activity) {
        // 使用normal channel的更新逻辑
        Log.d("NormalUpdater", "Checking for updates on Normal channel")
        // 待实现 ... ...
    }
}

normal渠道再新建UpdaterFactory (注意,两个渠道的UpdaterFactory 类名和包名需要一致),代码如下:

javascript 复制代码
package com.example.androiddemos.update

import android.app.Activity

class UpdaterFactory {
    fun getUpdater(activity: Activity): IUpdateChecker = NormalUpdater(activity)
}

MainActivity增加一个测试按钮:

Kotlin 复制代码
Button(
            onClick = {
                val updateChecker = UpdaterFactory().getUpdater(context as Activity)
                updateChecker.check(context as Activity)
            },
            modifier = Modifier.padding(top = 16.dp)
        ) {
            Text("check for update, 依赖注入/工厂模式")
        }

开始测试, 先打GooglePlay的包,运行:

点击检查升级,日志:

ok. 同样,打normal渠道包,测试日志:

ok.

相关推荐
zh_xuan1 天前
android 多渠道打包
多渠道打包·google play 升级
xiangxiongfly9158 个月前
Android 多渠道打包总结
android·多渠道·多渠道打包·defaultconfig·buildtypes·productflavors
宾有为2 年前
【Android】多渠道打包配置
android·java·kotlin·1024程序员节·多渠道打包