Android gradle buildTypes: повторяющийся класс

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

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

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

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

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

2 ответа

Решение

Вы не можете иметь класс в main а также release, Вы должны разделить это на что-то вроде debug а также release,

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

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

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

buildTypes {

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

}

И вместо того, чтобы использовать мою константу класса Config.XYZ, я использовал buildConfig.XYZ

Другие вопросы по тегам