首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于用户国家的特征模块安装时动态交付

基于用户国家的特征模块安装时动态交付
EN

Stack Overflow用户
提问于 2020-04-20 13:55:37
回答 1查看 566关注 0票数 1

我试图利用安装时动态交付的好处,使用特定国家的条件。根据文档,Google提供了一种基于国家的条件。为了利用这一点,我创建了两个功能模块,而不是基本模块。

模块1:这个模块有一个特定于菲律宾的实现。所以我修改了这个模块的清单,看上去像这样-

代码语言:javascript
复制
<dist:module
        dist:instant="false"
        dist:title="@string/title_dynamicfeature">
    <dist:delivery>
        <dist:install-time>
            <dist:conditions>
                <dist:user-countries dist:include="true">
                    <dist:country dist:code="PH" />
                </dist:user-countries>
            </dist:conditions>
        </dist:install-time>
    </dist:delivery>
    <dist:fusing dist:include="true" />
</dist:module>

模块2:这个模块有一个特定于墨西哥的实现。所以我修改了这个模块的清单,看上去像这样-

代码语言:javascript
复制
<dist:module
        dist:instant="false"
        dist:title="@string/title_dynamicfeature">
    <dist:delivery>
        <dist:install-time>
            <dist:conditions>
                <dist:user-countries dist:include="true">
                    <dist:country dist:code="MX" />
                </dist:user-countries>
            </dist:conditions>
        </dist:install-time>
    </dist:delivery>
    <dist:fusing dist:include="true" />
</dist:module>

在基本模块(app)中,我编写了代码,使用反射实现特定国家的实现,假设一次只有一个国家适用。密码是这样的-

代码语言:javascript
复制
private fun provideSharedFeature(): SharedFeature {
    val sharedFeatures = arrayOf(
        getClassInstance("com.jai.dynamicfeature.SharedFeaturePH"),
        getClassInstance("com.jai.dynamicfeature.SharedFeatureMX")
    ).filterNotNull()
    if (sharedFeatures.size > 1) {
        throw IllegalStateException("More than one feature module installed")
    } else if (sharedFeatures.isEmpty()) {
        throw IllegalStateException("No feature module installed")
    }

    return sharedFeatures[0]
}

当我在本地运行时,这段代码工作得很好,因为构建哪个模块需要在构建配置中给出,但是当我使用Google下载应用程序时,它就失败了。该应用程序与消息"No feature module installed"崩溃,这意味着没有提供任何模块。

我还有其他方法可以做到这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2020-06-08 12:23:18

你不应该放if (sharedFeatures.size > 0)吗?你只能拥有MX或PH。第二,您的测试设备的国家帐单地址是什么?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61324214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档