Я хотел реализовать новый модуль динамических функций в существующем приложении, но мне пришлось отказаться из-за проблем со вкусом продукта.
Пример кода можно найти здесь. https://github.com/henningBunk/dynamic_feature_problem
У меня есть три модуля:
- приложение. Основной модуль приложения. Имеет два вкуса продукта:
store
: amazon
и google
pay_status
: free
и pro
В результате образуются четыре комбинации: amazonFree
, amazonPro
, googleFree
и googlePro
Это зависит от lib
и перечисляет dynamic_feature
как динамическую функцию.
lib. Библиотечный модуль,
app
иdynamic_feature
зависят от этого модуля.lib
имеет только вкусpay_status
. Поэтому, когда я строю, например. приложение какgoogleFree
аромат, lib создаст егоfree
вкус.dynamic_feature. Новая функция, которая должна быть динамической. У этого модуля не должно быть никаких ароматов. Это зависит от приложения и библиотеки.
Три файла gradle, сокращенные до вкусов и зависимостей продуктов, выглядят следующим образом:
Модуль приложения build.gradle:
apply plugin: 'com.android.application'
android {
dynamicFeatures = [":faq"]
flavorDimensions "store", "pay_status"
productFlavors {
google { dimension "store" }
amazon { dimension "store" }
free { dimension "pay_status" }
pro { dimension "pay_status" }
}
}
dependencies {
implementation project(':lib')
}
Модуль lib build.gradle:
apply plugin: 'com.android.library'
android {
flavorDimensions "pay_status"
productFlavors {
free { dimension "pay_status" }
pro { dimension "pay_status" }
}
}
dependencies {
}
Модуль динамических функций build.gradle:
apply plugin: 'com.android.dynamic-feature'
android {}
dependencies {
implementation project(':app')
implementation project(':lib')
}
Это приводит к ошибке:
ERROR: Unable to resolve dependency for ':dynamic_feature@debug/compileClasspath': Could not resolve project :app.
Show Details
Affected Modules: dynamic_feature
Итак, я прочитал, что модулю dynamic_feature
может потребоваться стратегия отсутствующих измерений. Добавление
missingDimensionStrategy "store", "google"
missingDimensionStrategy "pay_status", "free"
в файл dynamic_feature build.gradle в android.defaultConfig. Таким образом я могу создать некоторые ароматы, но не все:
apply plugin: 'com.android.feature'
наapply plugin: 'com.android.dynamic-feature'
в одном модуле .... ???? - person Vall0n   schedule 06.08.2019