Я пытаюсь использовать преимущества динамической доставки c во время установки с использованием условия c, указанного в конкретной стране. В соответствии с этот do c Google Play предоставляет способ определения условий в зависимости от страны. Чтобы использовать это, я создал 2 функциональных модуля, отличных от базового модуля.
Модуль 1: Этот модуль имеет реализацию, заданную Филиппинами c. Поэтому я изменил манифест этого модуля так, чтобы он выглядел примерно так:
<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: Этот модуль имеет реализацию, спецификацию Мексики c. Поэтому я изменил манифест этого модуля, чтобы он выглядел примерно так:
<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>
В базовом модуле (приложении) я написал код для получения реализации c, специфичной для страны, с использованием отражения, предполагая, что при время будет применима только одна страна. Код выглядит так -
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 Play. Приложение вылетает с сообщением "No feature module installed"
, что означает, что ни один из модулей не предоставлен.
Есть ли другой способ, которым я могу достичь этого?