Невозможно добавить модуль динамической функции из-за проблем со сборкой

Я хотел реализовать новый модуль динамических функций в существующем приложении, но мне пришлось отказаться из-за проблем со вкусом продукта.

Пример кода можно найти здесь. https://github.com/henningBunk/dynamic_feature_problem

У меня есть три модуля:

  1. приложение. Основной модуль приложения. Имеет два вкуса продукта:

store: amazon и google
pay_status: free и pro

В результате образуются четыре комбинации: amazonFree, amazonPro, googleFree и googlePro

Это зависит от lib и перечисляет dynamic_feature как динамическую функцию.

  1. lib. Библиотечный модуль, app и dynamic_feature зависят от этого модуля. lib имеет только вкус pay_status. Поэтому, когда я строю, например. приложение как googleFree аромат, lib создаст его free вкус.

  2. 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. Таким образом я могу создать некоторые ароматы, но не все:

введите здесь описание изображения


person Henning    schedule 12.04.2019    source источник
comment
У меня такая же проблема, и в моем случае я просто забыл заменить apply plugin: 'com.android.feature' на apply plugin: 'com.android.dynamic-feature' в одном модуле .... ????   -  person Vall0n    schedule 06.08.2019
comment
вы уверены, что у нас такая же проблема? поскольку я уже использую "com.android.dynamic-feature". моя проблема заключается в разных вариантах сборки.   -  person Henning    schedule 27.09.2019
comment
Совершенно уверен ... Может быть, есть несколько способов получить эту ошибку.   -  person Vall0n    schedule 30.09.2019


Ответы (1)


Я нашел решение, но оно меня не устраивает. Все варианты сборки должны быть реализованы в модуле динамических функций, чтобы действительно можно было построить все варианты сборки.

missingDimensionStrategy не работает.

дополнительная информация здесь: https://proandroiddev.com/advanced-android-flavors-part-4-a-new-version-fc2ad80c01bb

person Henning    schedule 27.09.2019