Подтвердить что ты не робот

Android gradle buildTypes: Duplicate class

Я конвертирую свое приложение для использования gradle, и я пытаюсь использовать buildTypes. У меня есть класс Constants, который я хочу изменить для моей сборки релиза. Поэтому у меня есть файл в src/main/java/my/package/name/Constants.java и src/release/java/my/package/name/Constants.java.

Когда я пытаюсь построить это, gradle сообщает мне, что сборка не удалось в файле Constants в моей версии buildtype с ошибкой, что это дублированный класс.

Я также попробовал добавить другой sourceSet для этого в моем build.gradle следующим образом:

sourceSets {
    main {
        java.srcDirs = ['src/main/java'];
        //...
    }
    release {
        java.srcDirs = ['src/release/java'];
    }
}

Но это все равно дает мне ту же ошибку. Поэтому мне интересно, что я здесь делаю неправильно?

4b9b3361

Ответ 1

Вы не можете иметь класс в main и release. Вам нужно разбить его на что-то вроде debug и release.

gradle объединит исходные наборы для каждого buildType с помощью main.
Это причина, почему класс дублируется в вашей сборке release.

Итак, это правило: поместите класс в main или в каждый buildType, но не оба.

Ответ 2

Ответ от "fix" помог мне в пути, но я получил сообщение об ошибке из основного Gradle, указав, что константа отсутствует (в моем классе Config). Это потому, что у меня был класс только в платной и бесплатной версии, а не в основном. Не удалось найти класс Config. Я не уверен, что это ошибка в Studio... Я, наконец, решил ее со следующим:

buildTypes {

    release {
        ...
        buildConfig "public static final boolean XYZ = false;"
    }

}

И вместо использования константы класса Config.XYZ я использовал buildConfig.XYZ