单工程多App实现指南一

一.背景:

目前我们的app主要是在googlePlay上架, 为了扩大覆盖面,我们需要在华为,小米等海外商店上架自己的App,但因为是海外商店的原因,要求包名id不一样,也就是一个新的app。

二.存在问题:

我们目前的工程配置是实现不了了,乃至于在好几次给华为,小米单独打包的时候,都是拉取之前配置好代码的华为、小米分支。单独打包。这导致每次打包都很费时间,需要切分支,而且无法没有影响的合入不断迭代的功能。

在googleplay商店和华为商店的App在功能上也有所不同,主要是登录服务体系与sku购置,支付体系不同。因此在华为商店的App我们停止更新了一年之久,中间将近30个版本的功能都没有并入。

三.解决方法:

  • 工程构建方案

经过调研,我决定采用多渠道,多包名配置的方案,通过Gradle文件的配置来实现分渠道与包;通过抽象接口服务来实现相同业务,不同服务支持的实现。

  • 业务处理三方问题

因为我们的App集成了facebook与GoogleAD,做了验证后,目前因修改包名,不会影响这两个服务的使用。因此,在业务上的处理我们的重点都在登录逻辑和支付体系上。

多产品配置

1.gradle配置

在主module的build.gradle配置app维度,productFlavors可配置多个不同特性的app,如下我们配置普通的app和华为特性的app,我们在这里配置app的id,渠道信息,最终打出的包他们的这些信息都会不一样,类似应用多开的感觉(当前,它们的实现机制截然不同,应用双开的技术未有了解),有两种方案可供选择:

A方案:通过applicationIdSuffix属性来配置华为的包名, applicationIdSuffix 标识默认的应用 ID 上追加一段,在最后构建后,它会将所有的包名都替换为新的,包名无法完全替换,只能在尾部追加名称

//google play store 与 huaWei store 配置
flavorDimensions "app"
  productFlavors {
   
        demo {
   
            dimension "app"
            manifestPlaceholders = [YOGA_CHANNEL_NAME:"google", YOGA_CHANNEL_CODE:"600001"]
        }

        huaWei {
   
            dimension "app"
            applicationIdSuffix ".huawei"
            manifestPlaceholders = [YOGA_CHANNEL_NAME:"h2o_huawei", YOGA_CHANNEL_CODE:"300001"]
        }
    }

B方案:通过配置全新的applicationId来更改包名,可以完全替换包名,B方案看起来清晰明了一些,我们选择B方案:

//google play store 与 huaWei store 配置
flavorDimensions "app"
productFlavors {
   
    demo {
   
        dimension "app"
        applicationId "com.demo.inc"
        manifestPlaceholders = [YOGA_CHANNEL_NAME:"google", YOGA_CHANNEL_CODE:"600001"]
    }

    huaWei {
   
        dimension "app"
        applicationId "com.demo.inc.huawei"
        manifestPlaceholders = [YOGA_CHANNEL_NAME:"h2o_huawei", YOGA_CHANNEL_CODE
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值