Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android gradle buildTypes: Duplicate class

I'm converting my app to use gradle, and I'm trying to use the buildTypes. I have a Constants class which I wish to modify for my release build. So I have a file at src/main/java/my/package/name/Constants.java and at src/release/java/my/package/name/Constants.java.

When I try to build this, gradle tells me the build failed on the Constants file in my release buildtype, with the error that it's a duplicate class.

I also tried adding a different sourceSet for this in my build.gradle like this:

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

But this still gives me the same error. So I'm wondering, what am I doing wrong here?

like image 227
Arne517 Avatar asked Sep 13 '13 09:09

Arne517


1 Answers

You can not have a class in main and release. You need to split it into something like debug and release.

gradle will merge the source sets for each buildType with main.
This is the reason, why the class gets duplicated in your release build.

So the rule is: put a class into main, or in every buildType but not both.

like image 60
flx Avatar answered Oct 05 '22 12:10

flx