Как предотвратить ошибку Duplicate Class при использовании одного и того же именованного класса в разных вариантах? - PullRequest
0 голосов
/ 07 октября 2018

Прежде всего, я только что проверил множество тем в StackOverflow об этой проблеме, но ни одна из них не решила мою проблему.Моя проблема в том,У меня есть 2 разных вкуса, которые названы основными и экспериментальными. main - это вариант по умолчанию.Я просто хочу переопределить или использовать свой A.java в экспериментальном варианте сборки, но это приводит к тому, что дублирующий класс обнаружил ошибку.Как я могу предотвратить или исправить эту проблему, потому что я полагаю, что использование одного и того же именованного класса возможно с помощью разновидностей?Или я сделал что-то не так?Я надеюсь, что вы можете помочь мне с моей проблемой.Заранее спасибо.

Структура проекта

  • app
    • src
      • main
        • java
          • core
            • A.java
      • экспериментальный
        • java
          • core
            • A.java

build.gradle

</p>

<code>productFlavors{
    main{
        dimension = "default"
        applicationId "com.example.yekta.basicApp.main"
    }
    experimental{
        dimension = "default"
        applicationId "com.example.yekta.basicApp.experimental"
    }
}

sourceSets {
    main {
        java.srcDirs = ['src/main/java']
        res.srcDirs = ['src/main/res']
        assets.srcDirs = ['src/main/assets']
    }

    experimental {
        java.srcDirs = ['src/experimental/java']
        res.srcDirs = ['src/experimental/res']
        assets.srcDirs = ['src/experimental/assets']
    }
}
</code>

1 Ответ

0 голосов
/ 07 октября 2018

Шаг # 1: переименуйте ваш один аромат из main в любое другое допустимое значение, отличное от main, test или androidTest (или, в вашем случае, experimental, поскольку у вас уже естьароматизатор с таким именем)

Шаг № 2: Настройте исходный набор для только что переименованного аромата, используя имя, выбранное из шага № 1

Шаг № 3: Переместите свойA.java из main к исходному набору, который вы создали на шаге №2

Исходный набор main предназначен для кода, который будет использоваться во всех разновидностях продукта и типах сборки.Вы не можете изменить это, пытаясь превратить main во вкус продукта.

Обратите внимание, что в Android Studio 3.2 оказывается, что попытка определить вкус продукта с именем main приводит к сбою сборки - по крайней мере, это сбой, когда я пытался воспроизвести эту проблему.

...